2010-03-23 79 views
2

我想在我的WPF應用程序中做一件相當簡單的事情,或者至少我覺得這很簡單。如何在觸發器中使用代碼隱藏屬性來更改控件屬性?

我有一個窗口,在後面的代碼中包含一個int屬性。我們稱之爲IntProperty。該窗口實現INotifyPropertyChanged接口,並且IntProperty觸發更改通知。它看起來像這樣:

 public int IntProperty 
    { 
     get 
     { 
      return intProperty; 
     } 

     private set 
     { 
      if (value != intProperty) 
      { 
       intProperty = value; 
       NotifyPropertyChanged("IntProperty"); 
      } 
     } 
    } 

在我已經定義與代表特定的顏色填充屬性設置矩形的XAML文件。

    <Rectangle x:Name="MyRectangle" Fill="Red" Width="100" Height="5" Margin="3,0,0,0" VerticalAlignment="Center" /> 

我現在想要做的是設置填充屬性取決於IntProperty的值。 我正在尋找一些觸發此更改的簡單XAML行。

它應該像這樣(APPWINDOW是窗口的名稱):

<Rectangle x:Name="MyRectangle" Fill="Red" Width="100" Height="5" Margin="3,0,0,0" VerticalAlignment="Center"> 
<Rectangle.Triggers> 
    <Trigger SourceName="AppWindow" Property="IntProperty" Value="1"> 
     <Setter TargetName="MyRectangle" Property="Fill" Value="Green" /> 
    </Trigger> 
</Rectangle.Triggers> 

有沒有簡單的方法來做到這一點?到目前爲止,我找不到任何簡單的解決方案。如果有人能指出我正確的方向,我將不勝感激。

謝謝!

回答

5

爲此,您需要使用DataTrigger

<Rectangle x:Name="MyRectangle" Fill="Red" Width="100" Height="5" Margin="3,0,0,0" VerticalAlignment="Center"> 
    <Rectangle.Triggers> 
     <DataTrigger Binding="{Binding IntProperty}" Value="1"> 
      <Setter TargetName="MyRectangle" Property="Fill" Value="Green" /> 
     </Trigger> 
    </Rectangle.Triggers> 
</Rectangle> 
+0

謝謝,那正是我所需要的。 我不得不添加Style和Style.Triggers,並從Rectangle標籤中刪除Fill,並將其放置在Style標籤的Setter中,但之後它就起作用了 – 2010-03-23 20:35:35

相關問題