【问题标题】:Setting Binding Expression in WPF DataGrid Column?在 WPF DataGrid 列中设置绑定表达式?
【发布时间】:2014-07-01 14:07:16
【问题描述】:

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

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

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

谢谢 维沙尔

【问题讨论】:

    标签: c# wpf datagrid expression


    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 2019-06-05
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      • 2021-08-26
      • 2013-02-19
      • 2021-03-18
      • 2018-12-28
      相关资源
      最近更新 更多