我希望为DataGrid中的所有列使用特定的模板。通常的做法是在每个列中复制整个DataTemplate的XAML多次。
是否有一种全局定义CellTemplate作为资源的方法,然后只需将“Binding”的“Path”属性传递给它,以便显示来自DataContext的正确项目?
这种做法可行吗?
我希望为DataGrid中的所有列使用特定的模板。通常的做法是在每个列中复制整个DataTemplate的XAML多次。
是否有一种全局定义CellTemplate作为资源的方法,然后只需将“Binding”的“Path”属性传递给它,以便显示来自DataContext的正确项目?
这种做法可行吗?
<DataTemplate x:Name="myTemplate" TargetType="sdk:DataGridTemplateColumn">
<StackPanel Orientation="Horizontal">
<TextBox Text="{Binding FirstName}" BorderThickness="0"/>
<TextBox Text="{Binding LastName}" BorderThickness="0"/>
</StackPanel>
</DataTemplate>
<sdk:DataGridTemplateColumn Header="Name" CellTemplate={StaticResource myTemplate}>
或者
您可以在代码后台中传递绑定路径名称,例如...
string colPath = "FirstName";
DataGrid grid = new DataGrid();
grid.ItemsSource = myViewModel.EmpCollection;
DataGridTemplateColumn column = new DataGridTemplateColumn();
DataTemplate itemTemplate = (DataTemplate)XamlReader.Load("<DataTemplate xmlns=\"http://schemas.microsoft.com/client/2007\"> <ContentPresenter Content=\"{Binding Path=" + colPath + "}\" /></DataTemplate>");
column.CellTemplate = itemTemplate;
grid.Columns[0] = column;