绑定到项目而不是列表框中的属性

时间:2014-03-27 13:13:34

标签: c# wpf xaml

我有一个WPF列表框,我目前正在使用一个可见性转换器绑定到当前项目的返回。 但是,我想传递对象,而不是传入返回值。

我尝试使用/而不是Path = Returns但它不再调用转换器。关于我做错了什么想法?

<ListBox Name="BetsListBox" BorderThickness="0"  ItemsSource="{Binding Path=Wagers}"  FontFamily="Arial Black" FontSize="12">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel  Orientation="Horizontal">
                <TextBlock FontFamily="Arial" Text="{Binding Path=UnitStake, StringFormat={}{0:N2}}" />
                <TextBlock FontFamily="Arial" Text="{Binding Path=WagerType}" Margin="5,0" />
                <TextBlock FontFamily="Arial" Text="{Binding Path=CalculatedStake, StringFormat={}{0:N2}}"  />
                <StackPanel Margin="-5,0" Visibility="{Binding Path=Returns,Converter={StaticResource BetWagerPotentialReturnToVisibilityConverter1}}" Orientation="Horizontal">
                    <TextBlock HorizontalAlignment="Left" FontWeight="Bold" Text=", Bet Returns"  FontFamily="Arial"  FontStretch="ExtraCondensed" Margin="5,0,5,0"/>
                    <TextBlock FontWeight="Bold" Text="{Binding PotentialReturns, StringFormat={}{0:N2}}" ToolTip="{Binding Name}" FontFamily="Arial" FontStretch="ExtraCondensed" />
                </StackPanel>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

3 个答案:

答案 0 :(得分:5)

您是否尝试过直接使用Binding?

编辑:

我的不好,忘记删除逗号:

Visibility="{Binding Converter={StaticResource BetWagerPotentialReturnToVisibilityConverter1}}"

答案 1 :(得分:1)

在绑定中,当你没有指定路径时,它意味着绑定到当前DataContext,在这种情况下,它是ListBox的ItemsSource中的相应项:

<StackPanel Visibility="{Binding Converter={StaticResource 
    BetWagerPotentialReturnToVisibilityConverter1}}" >

答案 2 :(得分:1)

如果"{Binding}"的标记中没有其他内容,您可以Binding,但如果您想添加Converter,那么您必须使用. 1}}表示'这个对象'的符号:

<StackPanel Margin="-5,0" Visibility="{Binding Path=., Converter={StaticResource 
    BetWagerPotentialReturnToVisibilityConverter1}}" Orientation="Horizontal">
    ...
</StackPanel>

您可以在MSDN上的Binding.Path Property页面上找到更多信息。


更新&gt;&gt;&gt;

为了澄清这种情况,您可以通过多种方式将数据绑定到XAML中的整个对象:

如果您有逗号,那么需要使用.表示法来避免编译错误:

<StackPanel Margin="-5,0" Visibility="{Binding ., Converter={StaticResource 
    BetWagerPotentialReturnToVisibilityConverter1}}" Orientation="Horizontal">
    ...
</StackPanel>

如果此处没有逗号,则需要使用.表示法:

<StackPanel Margin="-5,0" Visibility="{Binding Converter={StaticResource 
    BetWagerPotentialReturnToVisibilityConverter1}}" Orientation="Horizontal">
    ...
</StackPanel>

此外,设置Path(如原始示例中所示)是可选的,并且可以省略此关键字(如上面的两个示例中所示)。