18


7

DataTrigger条件でバインディングを使用する

次の単純なクラスがあるとします。

public class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class PersonHolder
{
    public Person CurrentPerson { get; set; }
    public int ActiveId { get; set; }
}

これで、PersonH​​olderクラスのインスタンスが DataContext`であるグリッドがあり、グリッドには PersonH​​older`の CurrentPerson`にバインドされた StackPanel`があり、そのデータを表示しています。


だから-質問:「CurrentPerson」の「Id」が「PersonH​​older」の「ActiveId」に一致する場合、「StackPanel」に緑色の背景をどのように付けることができますか?例.._)。 私の考えでは、これはトリガーを使用するものですが、トリガー条件値でバインディングを使用できますか? もしそうなら、私はこのようなことをすることができます:


しかしこれはうまくいきません。 どうすればこれを解決できますか?

1 Answer


35


Valueプロパティでバインディングを使用することはできませんが、http://msdn.microsoft.com/en-us/library/system.windows.data.multibinding.aspx [MultiBinding]を使用してこれを回避できます。 IMultiValueConverter。 たとえば、「トリガー」を「スタイル」で定義します。 このような何かを与えるWindow.Resources:


「MultiBinding」と「IMultiValueConverter」の例については、http://web.archive.org/web/20130111212302/http://www.switchonthecode.com/tutorials/wpf-tutorial-using-multibindings [このリンク]を参照してください。 書くのはかなり簡単です。