2017-08-24 151 views
0

你好,我有一個綁定和DataTrigger的問題。所以我的代碼是:Wpf綁定+ DataTrigger

<tog:HorizontalToggleSwitch Margin="0,10,15,0" HorizontalAlignment="Left" > 
<tog:HorizontalToggleSwitch.Style> 
    <Style TargetType="{x:Type tog:HorizontalToggleSwitch}"> 
    <Setter Property="IsChecked" Value="{Binding Staff.isSelfie, Mode=TwoWay}"/> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding ElementName=Admin,Path=IsChecked}" Value="True"> 
     <Setter Property="IsChecked" Value="True" /> 
     <Setter Property="IsEnabled" Value="False"/> 
     </DataTrigger> 
    <DataTrigger Binding="{Binding ElementName=Admin,Path=IsChecked}" Value="False"> 
     <Setter Property="IsChecked" Value="False" /> 
     <Setter Property="IsEnabled" Value="True"/> 
    </DataTrigger> 
    </Style.Triggers> 
    </Style> 
</tog:HorizontalToggleSwitch.Style> 
</tog:HorizontalToggleSwitch> 

正如你可以看到我在物業器isChecked有約束力的價值Staff.isSelfie和我改變它Datatrigger內。我的問題是我沒有在變量Staff.isSelfie上得到IsChecked的bool值。 DataTrigger的工作原理是,當我點擊一個單選按鈕的Admin Element時,開關從關閉變爲開啓。從Staff.isSelfie的代碼是:

bool _isSelfie; 
    [DataMember] 
    public bool isSelfie 
    { 
     get 
     { 
      return _isSelfie; 
     } 

     set 
     { 
      if (_isSelfie != value) 
      { 
       _isSelfie = value; 
       OnPropertyChanged(nameof(isSelfie)); 
      } 
     } 
    } 

其執行INotifyPropertyChanged。變量Staff.isSelfie從我的數據庫中的布爾值來看他的價值,這就是爲什麼我想在開始時設置它。我怎樣才能從DataTrigger的值真或假我的變量Staff.isSelfie?哪裏不對?非常感謝。

回答

0

<Setter Property="IsChecked" Value="False" />刪除現有綁定。當Admin.IsChecked相應地更改並更新Horizo​​ntalToggleSwitch.IsChecked時,請嘗試監聽事件。

Horizo​​ntalToggleSwitch將僅具有觸發器的IsEnabled

<tog:HorizontalToggleSwitch IsChecked="{Binding Staff.isSelfie, Mode=TwoWay}" 
          Margin="0,10,15,0" HorizontalAlignment="Left"> 
<tog:HorizontalToggleSwitch.Style> 
    <Style TargetType="{x:Type tog:HorizontalToggleSwitch}"> 
    <Style.Triggers> 
     <DataTrigger Binding="{Binding ElementName=Admin,Path=IsChecked}" Value="True"> 
     <Setter Property="IsEnabled" Value="False"/> 
     </DataTrigger> 
    <DataTrigger Binding="{Binding ElementName=Admin,Path=IsChecked}" Value="False"> 
     <Setter Property="IsEnabled" Value="True"/> 
    </DataTrigger> 
    </Style.Triggers> 
    </Style> 
</tog:HorizontalToggleSwitch.Style> 
</tog:HorizontalToggleSwitch> 

,這裏是與2周的CheckBox改變器isChecked一個例子:

<CheckBox Content="Admin" Name="Admin" 
      Checked="Admin_CheckedChanged" Unchecked="Admin_CheckedChanged"/> 
<CheckBox Name="ToggleSwitch" IsChecked="{Binding Path=isSelfie}" Content="???"/> 
private void Admin_CheckedChanged(object sender, RoutedEventArgs e) 
{ 
    ToggleSwitch.SetCurrentValue(CheckBox.IsCheckedProperty, Admin.IsChecked); 
}