2009-11-26 88 views
2

我想要通过对视图模型中的属性进行更改来触发Silverlight行为。然而,我无法弄清楚如何做到这一点。基于视图模型属性更新的Silverlight行为

所以,我有一个非常简单的视图模型:

public class MyViewModel : INotifyPropertyChanged 
{ 
    private bool changingProperty; 
    public bool ChangingProperty 
    { 
     get { return changingProperty; } 
     set 
     { 
      if (changingProperty != value) 
      { 
       changingProperty = value; 
       NotifyPropertyChanged("ChangingProperty"); 
      } 
     } 
    } 
    public string SomeProperty { get { return "SomePropertyValue"; } } 

    // INotifyPropertyChanged implementation here....... 
} 

该视图模型是绑定了SomeProperty文本块中的用户控件的数据上下文:

<TextBlock x:Key="myTextBlock" Text="{Binding SomeProperty}" /> 

这一切工作正常。现在我想附加一个myTextBlock的行为,这是由我的视图模型中ChangingProperty的更改触发的。例如,行为应该突出显示TextBlock(或更复杂的东西)。

如何指定此触发器?这可能吗?

亲切的问候,

罗纳德

回答

1

沿东西我的回答对类似的问题here行可能会有帮助。

下面是如何将该技术应用于您的要求的示例。

<Grid.Resources> 
    <local:BoolToBrushConverter x:Key="Highlighter" 
    FalseBrush="Transparent" TrueBrush="Yellow" /> 
</Grid.Resources> 

<Border Background="{Binding ChangingProperty, Converter={StaticResource Highlighter}}"> 
    <TextBlock x:Name="txtTarget" Text="{Binding SomeProperty}" /> 
</Border> 
+0

是的,我过分简化了我的要求。我想要做的例子是突出显示TextBlock中的文本,或者运行一些动画(或其他任何可以用Silverlight行为执行的操作)。我更新了我的问题以反映这一点。 – 2009-11-26 18:09:41

+0

这可能有效。不完全是我想要的,但我认为这是目前用Silverlight做的最好的。我会试一试,谢谢。任何想法,如果WPF DataTrigger将成为Silverlight 4的一部分?我认为这将解决我的问题。 – 2009-11-27 07:01:28

+0

可悲的是我不认为SL4也有这个。 – AnthonyWJones 2009-11-27 07:54:48