你好,我有一个绑定和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的布尔值。DataTrigger可以工作,因为当我点击管理元素时,开关从关闭变为打开,这是一个单选按钮。来自Staff.isSelfie的代码是:
bool _isSelfie;
[DataMember]
public bool isSelfie
{
get
{
return _isSelfie;
}
set
{
if (_isSelfie != value)
{
_isSelfie = value;
OnPropertyChanged(nameof(isSelfie));
}
}
}它实现了INotifyPropertyChanged。变量Staff.isSelfie从我的数据库中的布尔值中获取它的值,这就是为什么我要在开头设置它的原因。如何将DataTrigger中的值true或false传递给我的变量Staff.isSelfie?怎么啦?非常感谢。
发布于 2017-08-24 17:20:04
<Setter Property="IsChecked" Value="False" />删除现有绑定。尝试在Admin.IsChecked更改时侦听事件并相应地更新HorizontalToggleSwitch.IsChecked。
HorizontalToggleSwitch将只有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个CheckBoxes更改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);
}https://stackoverflow.com/questions/45857103
复制相似问题