C#'if'绑定值

时间:2011-10-31 13:27:19

标签: c# data-binding if-statement

我在一个名为House的类上有一个由Binding填充的列表视图。

以下是我的代码示例:

<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 个答案:

答案 0 :(得分:5)

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

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

请参阅此处的最佳答案:WPF: Display a bool value as "Yes" / "No" - 它有一个示例转换器类,您可以重新调整用途。

答案 1 :(得分:2)

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

答案 2 :(得分:0)

您想使用值converter

答案 3 :(得分:0)

更好的方法是使用转换器。像第一个例子中那样保持绑定,然后让转换器返回一个字符串,如果为true则返回“Sold”。

答案 4 :(得分: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>