2014-07-01 77 views
0

正如我们可以在数据表的数据列中添加表达式一样,是否可以创建像DataGridTextColumn这样的列和设置Binding Expression? 如果是,那么如何?在WPF DataGrid列中设置绑定表达式?

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

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

感谢 Visshal

回答

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> 
+0

感谢您的回复! – user3794163

+0

@ user3794163如果这有助于您,请将此标记为已接受 –