0

インスタンスDataTemplateの完全な名前を表示するために、次のものがあります。User

<DataTemplate x:Key="NameCellTemplate">
    <Label HorizontalAlignment="Stretch" Height="25">
        <Label.Content>
            <MultiBinding 
                Converter="{StaticResource FullNameConverter}"
                ConverterParameter="{x:Static Conv:NameFormat.FirstThenLast}" >

                <!-- Requires binding to object of type 'User' -->
                <Binding Path="FirstName" />
                <Binding Path="LastName" />
            </MultiBinding>
        </Label.Content>
    </Label>
</DataTemplate>

現在、次のようにテンプレート列をカスタマイズするために使用しています。

<DataGridTemplateColumn 
    CellTemplate="{StaticResource NameCellTemplate}" />

この列はインスタンスでいっぱいのデータ グリッドに属していUserますが、データ テンプレートを別のデータ グリッドの列に再利用したいと考えています。この 2 番目のデータ グリッドは別の型にバインドされ、代わりにUserプロパティとして保持されるため、次のようにします。

<DataGridTemplateColumn 
    Binding="{Binding Path=User}" 
    CellTemplate="{StaticResource NameCellTemplate}" />

ただし、このBinding属性はテンプレート列には許可されていません。

データ テンプレートをいずれかのデータ グリッドで再利用できるように、列テンプレートのバインド パスを指定したり、データ テンプレートを変更したりするにはどうすればよいですか?

4

1 に答える 1

2

この場合、データグリッド行のデータコンテキストが異なるため、次のようにテンプレートを適用できます。

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ContentControl Content="{Binding User}" 
                            ContentTemplate="{StaticResource NameCellTemplate}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
于 2013-09-04T18:09:01.540 に答える