2009-11-26 75 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