在WPF DataGrid列中设置绑定表达式?

时间:2014-07-01 14:07:17

标签: c# wpf datagrid expression

由于我们可以在数据表的数据列中添加表达式,是否可以创建类似DataGridTextColumn的列并设置Binding Expression? 如果是,那么如何?

正在为DataGridComputedColumn创建我自己的WPF DataGrid,它允许为该列设置表达式,以便在运行时连接DataSource时,它会在运行时自动计算此计算列。

例如,我有表EMP With 2 Columns FirstName和LastName。这将是DataGridTextColumn中的WPF DataGrid。现在第三列将是我自己的自定义DataGridComputedColumn其中包含像表达式这样的属性,我可以将表达式设置为FirstName +' ' + LastName,在运行时评估并生成第三列。

由于 Visshal

1 个答案:

答案 0 :(得分:1)

您的绑定属性中不能包含表达式。但是,您可以使用IValueConverter

编写它
public class FirstAndLastnameConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        var emp = value as Employee;
        return  string.Format("{0} {1}", emp.FirstName, emp.LastName);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return null;
    }
}

在你的XAML中:

<Window.Resources>
    <me:FirstAndLastnameConverter x:Key="converter" />
</Window.Resources>
...
<DataGrid>
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Path=FirstName}"/>
        <DataGridTextColumn Binding="{Binding Path=LastName}"/>
        <DataGridTextColumn Binding="{Binding Converter={StaticResource converter}}"/>
        ...
    </DataGrid.Columns>
</DataGrid>