2011-03-04 106 views
1

我有一個簡單的WPF應用程序和一個窗口。該窗口具有依賴項屬性。如何根據窗口的屬性設置按鈕的樣式

public static readonly DependencyProperty ShiftProperty; 

    static VirtualKeyboard() 
    { 
     ShiftProperty = DependencyProperty.Register("Shift", typeof(bool), typeof(VirtualKeyboard)); 
    } 

    public bool Shift 
    { 
     get { return (bool)GetValue(ShiftProperty); } 
     set { SetValue(ShiftProperty, value); } 
    } 

現在,在這個窗口中,我有一個按鈕,我希望通過應用樣式來顯示Shift是否爲True。我承認在WPF中不是很有經驗,但我相信這可以使用數據觸發器來解決。我的問題是鉤住它。

這是按鈕的xaml。

 <Button Grid.Row="4" Grid.ColumnSpan="2" Grid.Column="0" Command="local:VirtualKeyboard.ShiftButtonPressedCommand" Content="Shift" Name="ShiftButton"> 
      <Button.Style> 
       <Style> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding Path=Shift}" Value="True"> 
          <Setter Property="Control.Background" Value="Black"> 

          </Setter> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </Button.Style> 
     </Button> 

我會很感激所有幫助,我可以得到。

感謝, 斯特凡

回答

0

您是right.You可以datatriggers.You做到這一點需要寡婦的DataContext設置爲這個對於這個work.Otherwise綁定將無法訪問您的依賴屬性。

public VirtualKeyboard() 
    { 
     InitializeComponent(); 
     DataContext = this; 
    } 

,並指定你的風格像

<Button Grid.Column="0" Content="Shift" Name="ShiftButton"> 
      <Button.Style> 
       <Style> 
        <Setter Property="Button.Visibility" Value="Collapsed"/> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding Path=Shift}" Value="True"> 
          <Setter Property="Button.Visibility" Value="Visible"> 
          </Setter> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </Button.Style> 
     </Button> 
相關問題