DataGridのすべての列に特定のテンプレートが必要です。通常の方法は、DataTemplateのXAML全体を各列のDataGridで複数回複製することです。
CellTemplateをリソースとしてグローバルに定義し、それに「Binding」の「Path」プロパティを渡して、DataContextから正しいアイテムを表示する方法はありますか?
これは可能ですか?
DataGridのすべての列に特定のテンプレートが必要です。通常の方法は、DataTemplateのXAML全体を各列のDataGridで複数回複製することです。
CellTemplateをリソースとしてグローバルに定義し、それに「Binding」の「Path」プロパティを渡して、DataContextから正しいアイテムを表示する方法はありますか?
これは可能ですか?
キー/名前を使用してApp.XamlファイルにDataTemplateを作成します。
<DataTemplate x:Name="myTemplate" TargetType="sdk:DataGridTemplateColumn">
<StackPanel Orientation="Horizontal">
<TextBox Text="{Binding FirstName}" BorderThickness="0"/>
<TextBox Text="{Binding LastName}" BorderThickness="0"/>
</StackPanel>
</DataTemplate>
これで、このテンプレートをDataGridで次のように使用できます。
<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;
これがお役に立てば幸いです。