2011-10-31 81 views
3

我有一个名为House的类在Binding中填充的列表视图。C#'if'绑定值

这里是我的代码示例:

<DataTemplate DataType="house"> 
    <TextBlock Text="{Binding sold_status}" /> 
</DataTemplate> 

正如你看到的,我的变量名之一是sold_status。这是一个bool

我想分别显示10“已售出”或“未售出”。

是否有可能根据该值设计if语句?

所以才让你可以想像我想达到的目标:

<DataTemplate DataType="house"> 
    <TextBlock Text="({Binding sold_status} == 1) 'SOLD' else 'NOT SOLD'" /> 
</DataTemplate> 

回答

5

你要在创建DataTriggers样式根据需要设置的属性。您也可以使用转换器,但基于底层数据更改UI控件属性正是触发器/样式的全部内容。

..事实上,我可以看到你基本上是将sold_status转换为一些文本。为此,请使用转换器。我会张贴一个简单的例子..

在这里看到顶部的答案:WPF: Display a bool value as "Yes"/"No" - 它有一个示例转换器类,你可以重新调整用途。

+1

+1 - A转换器肯定是要走的路。事实上,这是bools的一个常见问题,我很惊讶没有VS代码片段。 – ChrisBD

0

更好的方法是使用转换器。如第一个示例中所做的那样保持绑定,然后让转换器返回带有“已售出”的字符串(如果属实)等。

2

查找示例中的IValueConverter接口。实现Convert方法以返回要显示的文本。

0

我建议你使用DataTrigger。它非常简单,不需要单独的转换器。

<DataTemplate DataType="house"> 
    <TextBlock x:Name="Status" Text="SOLD" /> 
    <DataTemplate.Triggers> 
     <DataTrigger Binding="{sold_status}" Value="False"> 
       <Setter TargetName="Status" Property="Text" Value="NOT SOLD"/> 
     </DataTrigger> 

    </DataTemplate.Triggers> 
</DataTemplate>