2

リスト ボックス内の項目の背景色を動的に設定するにはどうすればよいですか? つまり、ビジネス オブジェクトにもバインドしているプロパティがあるため、いくつかのビジネス ルールに基づいて、背景色を変更したいですか?

        <ListBox Background="Red">
      <ListBox.ItemContainerStyle>
          <Style TargetType="ListBoxItem">
              <Setter Property="Background" Value="Red"/>
          </Style>
      </ListBox.ItemContainerStyle>
 <ListBox.ItemTemplate>
      <DataTemplate>
                    <StackPanel Orientation="Horizontal"
                                Margin="5">
                        <TextBlock VerticalAlignment="Bottom"
                                   FontFamily="Comic Sans MS"
                                   FontSize="12"
                                   Width="70"
                                   Text="{Binding Name}" />
                        <TextBlock VerticalAlignment="Bottom"
                                   FontFamily="Comic Sans MS"
                                   FontSize="12"
                                   Width="70"
                                   Text="{Binding Age}" />
                     </StackPanel>
                </DataTemplate>
        </ListBox.ItemTemplate>
      </ListBox>

編集:ここに書かれています

Silverlight では、カスタム スタイルに x:Key 属性を追加し、それらを静的リソースとして参照する必要があります。Silverlight は、TargetType 属性値を使用して適用される暗黙的なスタイルをサポートしていません。

これは私のアプローチに影響を与えますか?

4

4 に答える 4

2

わかりました - 背景を決定するカスタム ロジックが必要な場合は、単純な IValueConverter クラスの構築を検討します。IValueConverter インターフェイスを実装し、その Convert メソッドで、指定された値をブラシに変更するだけです。

IValueConverters について説明している Sahil Malik からの簡単な投稿を次に示します。

http://blah.winsmarts.com/2007-3-WPF__DataBinding_to_Calculated_Values--The_IValueConverter_interface.aspx

于 2008-09-30T10:02:25.287 に答える
1

背景を複数のプロパティにバインドするには、IMultiValueConverter を使用できます。MultiBinding と連携して複数の値をクラスに渡し、単一の値を取得する点を除いて、IValueConverter と同じです。

これは、IMultiValueConverter と MultiBinding に関するランスルーで見つけた投稿です。

http://blog.paranoidferret.com/index.php/2008/07/21/wpf-tutorial-using-multibindings/

編集: IMultiValueConverter が利用できない場合 (Silverlight には IValueConverter しかないように見えます)、バインドされたオブジェクト全体 (Person オブジェクトなど) をいつでも IValueConverter に渡し、そこからさまざまなプロパティを使用してブラシを返すことができます。

于 2008-09-30T10:18:52.627 に答える
0

@マット返信ありがとうございます。トリガーについて調べてみます。

私の唯一の問題は、行に色を付ける必要があるかどうかを判断するためのロジックが少し複雑であるため、プロパティを確認することはできないため、実際にロジックを実行して色を判断する必要があることです。何か案は?

必要なすべての関連フィールドを備えた UI オブジェクトを作成できると思いますが、そのアプローチを取りたくなかったのです。

于 2008-09-30T09:55:19.627 に答える