1

次の rangeobservablecollection があります。

private readonly RangeObservableCollection<coll> _coll;

coll は、このコレクションに追加するチェックボックスの束です。次のように、特定の追加でチェックボックスの前景色を変更したい:

_coll.Add( info );

これの色を変える方法はありますか?

XAML コード:

<StackPanel Orientation="Horizontal">
                <CheckBox Margin="0,0,3,0" Foreground="{Binding Foreground"}">
                    <CheckBox.IsChecked>
                        <Binding Path="IsSelected"
                                 Mode="TwoWay">
                            <Binding.RelativeSource>
                                <RelativeSource Mode="Parent" />
                            </Binding.RelativeSource>
                        </Binding>
                    </CheckBox.IsChecked>
                </CheckBox>
                <ContentPresenter />
            </StackPanel>
4

1 に答える 1

4

前景色をcollクラスのSolidColorBrushプロパティにバインドするUIオブジェクトのテンプレートを使用できます。

<ListBox ItemsSource="{Binding items}">
    <ListBox.ItemTemplate>
      <DataTemplate>
        <StackPanel Orientation="Horizontal">
          <CheckBox IsChecked="{Binding IsChecked, Mode=TwoWay}" />
          <TextBlock Foreground="{Binding Foreground}" Content="{Binding Description}" />
        </StackPanel>
      </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

クラス定義は次のようになります。

public class coll
{
    public IsChecked { get; set; }
    public string Description { get; set; }
    public SolidColorBrush Foreground { get; set; }
}

次に、前景を変更できます。

info.Foreground = new SolidColorBrush(Colors.Red);
_coll.Add( info );

同じ効果を実現するためにここで使用できるバリエーションはたくさんあります: コンバーター、INPC...

于 2012-11-19T16:28:27.530 に答える