2014-07-01 76 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如果這有助於您,請將此標記爲已接受 –