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