0

2 つの ListBox と 1 つの Button があります。Button は List1.SelectedItems を List2 に送信します。List2 に追加された List1 の項目に視覚的な合図を追加したいと思います。これは、項目が選択されたときに視覚的な合図があるのと同様です。これを実現できるように、それらにプロパティを追加することは可能ですか?

 _______             _______
|       |     _     |       |
| List1 |    |>|    | List2 |
|_______|           |_______|

IsSelected プロパティを使用して背景を変更する例を次に示します。

<DataTemplate.Triggers> 
    <Trigger Property="IsSelected" Value="True"> 
        <Setter TargetName="listItem" Property="Background" Value="Blue" /> 
    </Trigger> 
</DataTemplate.Triggers>

「IsAdded」と呼ばれる追加のプロパティを追加したいと思います。これは、True に設定すると背景にも影響します。そのようなことは可能ですか、またはこれに対する代替アプローチはありますか?

ありがとう

4

1 に答える 1

1

ViewModelクラス、またはこれに似たものを使用してアイテムを表すことを願っています。必要なのは、プロパティ IsAdded を項目クラスに追加することです。Button.Clickイベントを処理するとき (または、さらに良いことに、選択した項目を List1 から List2 に挿入するプロパティがありますViewModel) ICommand、追加された選択した項目に悲しいことができます。それらが追加されたList2。

private bool isAdded;
public bool IsAdded
{
    get { return isAdded; }
    set
    {
        if (isAdded == value)
            return;
        isAdded = value;
        OnPropertyChanged("IsAdded");
    }
}

whereOnPropertyChangedメソッドはインターフェイスのPropertyChangedイベントを発生させます ( msdn article を参照)。INotifyPropertyChanged

を処理するButton.Clickと、追加する要素がわかるので、次のコード行を追加します。

...
foreach(var item in List1.SelectedItems)
{
    item.IsAdded = true;
}
...

DataTemplate.Triggersさらに、次のトリガーをコレクションに追加します。

<DataTrigger Binding="{Binding Path=IsAdded, Mode=OneWay}" Value="True">
    <Setter TargetName="listItem" Property="Background" Value="Red" />
</DataTrigger>
于 2012-04-27T18:28:23.960 に答える