有没有办法我可以将CellTemplate定义为全局资源,然后将绑定的路径属性传递给它,以便它从DataContext显示正确的项目?
这是可能吗? p>
解决方案使用键/名在App.Xaml文件中创建DataTemplate。
< DataTemplate x:Name =myTemplateTargetType =sdk:DataGridTemplateColumn> < StackPanel Orientation =Horizontal> < TextBox Text ={Binding FirstName}BorderThickness =0/> < TextBox Text ={Binding LastName}BorderThickness =0/> < / StackPanel> < / DataTemplate>现在您可以在DataGrid中使用此模板,如
< sdk:DataGridTemplateColumn Header =NameCellTemplate = {StaticResource myTemplate}>或 您可以将代码中的Binding Path名称传递给... 。
string colPath =FirstName; DataGrid grid = new DataGrid(); grid.ItemsSource = myViewModel.EmpCollection; DataGridTemplateColumn column = new DataGridTemplateColumn(); DataTemplate itemTemplate =(DataTemplate)XamlReader.Load(< DataTemplate xmlns = \schemas.microsoft/client/2007\>< ContentPresenter Content = \{ Binding Path =+ colPath +} \/>< / DataTemplate>); column.CellTemplate = itemTemplate; grid.Columns [0] =列;希望这将有所帮助。
I want a specific template for all my columns in DataGrid. The usual method is I will replicate the entire XAML for DataTemplate multiple times in the DataGrid in each of the Column.
Is there any way I can define the CellTemplate globally as a resource and then just pass the the "Path" property of "Binding" to it, so that it displays the correct item from the DataContext ?
Is this possible ?
解决方案Create DataTemplate in App.Xaml file with key/name.
<DataTemplate x:Name="myTemplate" TargetType="sdk:DataGridTemplateColumn"> <StackPanel Orientation="Horizontal"> <TextBox Text="{Binding FirstName}" BorderThickness="0"/> <TextBox Text="{Binding LastName}" BorderThickness="0"/> </StackPanel> </DataTemplate>Now you can use this template in DataGrid like
<sdk:DataGridTemplateColumn Header="Name" CellTemplate={StaticResource myTemplate}>OR You can to pass Binding Path name in code behind like...
string colPath = "FirstName"; DataGrid grid = new DataGrid(); grid.ItemsSource = myViewModel.EmpCollection; DataGridTemplateColumn column = new DataGridTemplateColumn(); DataTemplate itemTemplate = (DataTemplate)XamlReader.Load("<DataTemplate xmlns=\"schemas.microsoft/client/2007\"> <ContentPresenter Content=\"{Binding Path=" + colPath + "}\" /></DataTemplate>"); column.CellTemplate = itemTemplate; grid.Columns[0] = column;Hope this will help.
更多推荐
我可以将DataGrid的CellTemplate定义为资源,以便可以在多个列中重复使用?
发布评论