gpt4 book ai didi

c# - 为什么复选框在用户与之交互后会丢失其 IsChecked 绑定(bind)?

转载 作者:太空宇宙 更新时间:2023-11-03 11:25:10 25 4
gpt4 key购买 nike

更新:此问题已确认已在 .NET 4.0 上修复(我使用的是 3.5)。

我正在尝试使用复选框,以便用户可以手动设置它,除非同一窗口中的组合框具有特定值(在这种情况下,复选框被禁用并选中)。

这非常有效,直到用户手动选中/取消选中该框。之后,当组合框中的值更改时,IsChecked=True setter 停止工作。 IsEnabled=False setter 继续按预期工作。

当我希望可以使用纯 Xaml 时,我最终不得不在代码隐藏中使用一些逻辑。

有谁知道这是错误还是预期的行为。如果是这样,为什么?

<CheckBox>
Some text here
<CheckBox.Style>
<Style TargetType="{x:Type CheckBox}">
<Setter Property="IsChecked" Value="False" />
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=SelectedValue, ElementName=comboBox1, Mode=OneWay}" Value="Disable Checkbox">
<Setter Property="IsChecked" Value="True" />
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</CheckBox.Style>
</CheckBox>

谢谢。

最佳答案

您的项目中还有其他事情正在发生。

我尝试了以下方法:

<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow"
Name="Window"
SizeToContent="WidthAndHeight">
<StackPanel>
<CheckBox>
some text here
<CheckBox.Style>
<Style TargetType="{x:Type CheckBox}">
<Setter Property="IsChecked" Value="False" />
<Setter Property="IsEnabled" Value="True" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=SelectedIndex, ElementName=combo, Mode=OneWay}" Value="2">
<Setter Property="IsChecked" Value="True" />
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</CheckBox.Style>
</CheckBox>
<ComboBox Name="combo">
<TextBlock>item 1</TextBlock>
<TextBlock>item 2</TextBlock>
<TextBlock>item 3</TextBlock>
<TextBlock>item 4</TextBlock>
<TextBlock>item 5</TextBlock>
</ComboBox>
</StackPanel>
</Window>

非常简单。这里的目标是在组合框中选择项目 3 时,为 IsEnable 和 IsChecked 设置与您的值完全相同的值

它就像一个魅力。即:用户随意选中/取消选中复选框,然后当他在组合框中选择“项目 3”时,复选框被选中并禁用。如果他再次更改组合框中的所选项目,则取消选中复选框并重新启用,他可以一次又一次地选中/取消选中它。

所以您还有其他事情要处理。你写的应该有用。

编辑:关于您的评论,我用 3.5 版本而不是我最初使用的 4.0 进行了测试,确实可以重现您的问题,所以这显然是一个已在.net 框架 4.0 版本。

关于c# - 为什么复选框在用户与之交互后会丢失其 IsChecked 绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9619084/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com