5

DataGridのすべての列に特定のテンプレートが必要です。通常の方法は、DataTemplateのXAML全体を各列のDataGridで複数回複製することです。

CellTemplateをリソースとしてグローバルに定義し、それに「Binding」の「Path」プロパティを渡して、DataContextから正しいアイテムを表示する方法はありますか?

これは可能ですか?

4

1 に答える 1

6

キー/名前を使用して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;

これがお役に立てば幸いです。

于 2011-12-02T16:06:10.930 に答える