C# 如何在Silverlight中使用代码中的DataTrigger?

C# 如何在Silverlight中使用代码中的DataTrigger?,c#,.net,silverlight,datatrigger,C#,.net,Silverlight,Datatrigger,我发现了一些与WPF相关的示例,但没有一个与Silverlight相关 那么,设置in代码的工作示例是什么 下面是我目前拥有的代码,尽管它不起作用(没有异常,但在运行时不会发生任何事情): asset.isfocused更改并通过INotifyPropertyChanged引发更改通知尝试使用命名空间: System.Windows.Interactivity 并在“配置数据触发器”注释后添加以下内容 注: 最后,我遗漏了两个方面: 将触发器添加到笔刷: var triggers = Inte

我发现了一些与WPF相关的示例,但没有一个与Silverlight相关

那么,设置in代码的工作示例是什么

下面是我目前拥有的代码,尽管它不起作用(没有异常,但在运行时不会发生任何事情):


asset.isfocused
更改并通过
INotifyPropertyChanged
引发更改通知尝试使用命名空间:

System.Windows.Interactivity
并在“配置数据触发器”注释后添加以下内容

注:


最后,我遗漏了两个方面:

  • 将触发器添加到笔刷:

    var triggers = Interaction.GetTriggers(fillBrush);
    triggers.Add(focusTrigger);
    
  • 使用
    BindingOperators.SetBinding
    ,而不是
    binding
    属性设置器,在触发器上设置绑定:

    var binding = new Binding("IsFocussed") { Source = asset, Mode = BindingMode.OneWay };
    BindingOperations.SetBinding(focusTrigger, PropertyChangedTrigger.BindingProperty, binding);
    
  • 我不太明白为什么第二点是必要的,但它似乎是必要的


    希望这对其他人有所帮助。

    查看调试输出,这里的绑定似乎不正确:“IsFocused”。也许双“s”在这里是个问题?@隐形--谢谢,但这次不是这样:)
    using EventTrigger = System.Windows.Interactivity.EventTrigger;
    using TriggerCollection = System.Windows.Interactivity.TriggerCollection;
    
    var triggers = Interaction.GetTriggers(fillBrush);
    triggers.Add(focusTrigger);
    
    var binding = new Binding("IsFocussed") { Source = asset, Mode = BindingMode.OneWay };
    BindingOperations.SetBinding(focusTrigger, PropertyChangedTrigger.BindingProperty, binding);