0

次のスタイルをDataGridColumnsに(HeaderStyleプロパティを介して)適用しています。

    <Style x:Key="MyHeaderStyle" TargetType="DataGridColumnHeader">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate>
                    <TextBlock Text="???" />
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

同じスタイルが各列に適用されますが、どの列であるかに応じてコンテンツ(TextBlockテキストなど)を変更する方法が必要です。DataGridColumnHeaderには独自のバインディングがないと思いますが、どうすればこれを実現できますか?列の数はさまざまなので、それぞれに個別のスタイルを作成することはできません。

4

1 に答える 1

1

TemplateBindingを使用します-これにより、ControlTemplateからアクセスして、このコントロールテンプレートを使用する実際のコントロールに関する情報を取得できます。私のサンプルは、DataGridColumHeaderの通常の方法で宣言されたコンテンツにテキストブロックをバインドします。

<Style x:Key="ColumnHeaderStyle" TargetType="{x:Type DataGridColumnHeader}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="DataGridColumnHeader">
                <TextBlock Text="{TemplateBinding Content}"/>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
于 2013-02-01T00:34:52.933 に答える