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

本文关键字:设置 绑定 表达式 WPF DataGrid 正在 | 更新日期: 2023-09-27 18:11:11

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

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

例如,我有一个EMP表,它有两列FirstName和LastName。这将是WPF DataGrid中的DataGridTextColumn。现在第三列将是我自己的自定义DataGridComputedColumn,它具有类似表达式的属性,在其中我可以将表达式设置为FirstName +' ' + LastName,在运行时计算并生成第三列。

谢谢Visshal

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

绑定属性中不能有表达式。但是你可以用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>