1

グリッドがあります。グリッドの列は、ユーザーの選択に基づいて実行時に自動生成されます。

コンテンツが負の数の場合、グリッド内のセルを赤にする必要があります。

DataTemplateSelectorを作成しました。DataTemplateSelectorは正しく呼び出され、セルが負の場合はテンプレートを返します。

列は自動生成されるため、テンプレートのバインディングに正しいフィールドを単純に配置することはできません。

            <DataTemplate x:Key="MontantNegatifTemplate">                    
                <TextBlock Foreground="Red" Text="{Binding}" />
            </DataTemplate>

このようなテンプレートを作成すると、テキストはグリッドがバインドされているオブジェクトの名前になります。

私が次のようなことをした場合:

            <DataTemplate x:Key="MontantNegatifTemplate">                    
                <TextBlock Foreground="Red" />
            </DataTemplate>

Textblockが標準の自動生成セルを上書きしているように見えるため、セルは空です。

これを機能させる方法はありますか?別のアプローチを使用する必要がありますか?

4

1 に答える 1

0

私はついに私の質問に対するawnserを見つけました。

DataTemplateSelectorではなくStyleSelectorを使用する必要がありました。

同じように、グリッドリソースでDataTemplateの代わりにStyleを定義する必要がありました。

<style:NegativeStyleSelector x:Key="NegativeStyleSelector">
                    <style:NegativeStyleSelector.NegativeStyle>
                        <Style TargetType="GridViewCell">
                            <Setter Property="Foreground" Value="Red"/>
                        </Style>
                    </style:NegativeStyleSelector.NegativeStyle>
                </style:NegativeStyleSelector>
于 2010-09-08T18:20:15.390 に答える