Wpf 绑定 + DataTrigger

Wpf Binding + DataTrigger

您好,我遇到了 Binding 和 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));
            }
        }
    }

实现 INotify属性已更改。变量 Staff.isSelfie 从我数据库中的 bool 中获取他的值,这就是为什么我想在开始时设置它。如何从 DataTrigger 获取值 true 或 false 到我的变量 Staff.isSelfie?怎么了?非常感谢。

<Setter Property="IsChecked" Value="False" /> 删除现有绑定。在 Admin.IsChecked 发生变化时尝试监听事件并相应地更新 HorizontalToggleSwitch.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);
}