有条件的绑定值

时间:2019-07-15 12:55:29

标签: wpf mvvm data-binding

我正在WPF中将值绑定到我的DataGrid,我想知道我该怎么做。

我在模型中有一个int字段(类别),我想在我的DataGrid中显示一个描述字符串。

示例: “类别”字段的值分别为1,2,3,4,5,每个值都有一个说明,如何显示说明而不是datagrid绑定中的代码?

我尝试在ViewModel中创建一个方法,该方法将返回字符串描述。

//ViewModel 
public string GetDescription(int pCategory)
{
 if(pCategory == 1)
     return "01. Description";
 else if(pCategory == 2)
     return "02. Description";
 else if(pCategory == 3)
     return "03. Description";
 else
     return "None";
}

//XAML DataGrid binding code
<DataGridTextColumn IsReadOnly="True" Header="Category" Binding="{Binding GetDescription(Category)}"/>

1 个答案:

答案 0 :(得分:0)

在视图中使用DataGridTemplateColumn并添加数据触发器,就像这样

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBox>
                <TextBox.Style>
                    <Style TargetType="TextBox">
                        <Setter Property="Text" Value="None"/>
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding pCategory}" Value="1">
                                <Setter Property="Text" Value="01. Description"/>
                            </DataTrigger>
                            <DataTrigger Binding="{Binding pCategory}" Value="2">
                                <Setter Property="Text" Value="02. Description"/>
                            </DataTrigger>
                            <DataTrigger Binding="{Binding pCategory}" Value="3">
                                <Setter Property="Text" Value="03. Description"/>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </TextBox.Style>
            </TextBox>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>