C# 如何动态选中复选框?

C# 如何动态选中复选框?,c#,wpf,xaml,checkbox,C#,Wpf,Xaml,Checkbox,我正在动态生成复选框,并希望根据应选择的选项对其进行检查 我有以下XAML: <StackPanel> <StackPanel x:Name="ArmingPanel" /> </StackPanel> 根据已设置的标志,以下各项应设置为true或false: IsChecked = (options.Options.Arming & arming) != Arming.None 我可以在调试

我正在动态生成复选框,并希望根据应选择的选项对其进行检查

我有以下XAML:

        <StackPanel>
            <StackPanel x:Name="ArmingPanel" />
        </StackPanel>
根据已设置的标志,以下各项应设置为
true
false

IsChecked = (options.Options.Arming & arming) != Arming.None
我可以在调试时看到此值设置正确,但当屏幕上列出复选框时,它们总是未选中


我如何才能让他们按预期检查?

编辑:这不是对OP问题的质疑,但我觉得值得一提

如果您正在检查枚举标志,则正确的布尔表达式为:

(options.options.Arming&Arming)=报警

如果此表达式返回
true
,则
options.options.Arming
包含存储在
Arming


正确定义
enum Arming
成员也很重要

在调用您的
复选框
构造函数时,您设置了
IsChecked
,它在复选框上设置了
IsCheckedProperty
。然后使用
绑定再次设置
IsCheckedProperty
,因此第一个设置被覆盖


我怀疑您的问题在于绑定中的
转换器
转换器参数
IsChecked
-属性是由您的绑定设置的。有消息告诉我您的绑定已断开。如果要将IsChecked属性绑定到某个对象,则不应手动设置它。正如Matten所说,
IsChecked
是在代码中设置后立即由
绑定设置的。检查
FlagsEnumValueConverter
,如果它返回
Nullable,OP在调试模式下运行时会说该值设置正确。但他在手动设置属性后设置了该属性的数据绑定,这将覆盖先前设置的“正确”值。因此,此
enum Arming
成员的定义是正确的。我们不能谈论
Arming
的定义或
Arming的值。没有一个
,我的“答案”应该是注释,但太长了。我应该清楚地表明,我并不是在回答真正的问题。对于否决票,你希望我删除这个吗?你不觉得这是对给出的示例代码的重要批评吗?我不是反对者,但考虑到这不是OP的问题,我不确定这篇文章是否对这个问题有任何价值。你是否删除它取决于你认为这篇文章有多重要。是的,我承认否决票是值得的。我将编辑以明确我的意图,并希望将来这些信息对某些人有价值。
IsChecked = (options.Options.Arming & arming) != Arming.None