我正在动态生成CheckBoxes,我想根据应该选择哪些选项来检查它们。如何动态检查CheckBoxes?
我有以下XAML:
<StackPanel>
<StackPanel x:Name="ArmingPanel" />
</StackPanel>
以下代码:
private void AddCheckBoxes(OptionsVM options)
{
var converter = new FlagsEnumValueConverter();
foreach (Arming arming in Enum.GetValues(typeof(Arming)))
{
if (arming != Arming.None)
{
var binding = new Binding()
{
Path = new PropertyPath("Arming"),
Converter = converter,
ConverterParameter = arming
};
var checkBox = new CheckBox()
{
Content = arming.ToString(),
IsChecked = (options.Options.Arming & arming) != Arming.None
};
checkBox.SetBinding(CheckBox.IsCheckedProperty, binding);
ArmingPanel.Children.Add(checkBox);
}
}
}
根据该标志已设置,应设置为true
或false
如下:
IsChecked = (options.Options.Arming & arming) != Arming.None
我可以看到这个值被正确设置w如果我调试,但是当复选框在屏幕上列出时,它们总是未选中。
如何让他们按预期检查?
的
ConverterParameter
的'IsChecked'属性由你的绑定设置。 – Matten 2012-04-10 11:02:50东西告诉我你的绑定被破坏。如果你想将它绑定到某个东西,你不应该手动设置你的IsChecked属性。 – 2012-04-10 11:05:24
正如Matten所说,在您将其设置为代码后,立即通过“绑定”设置“IsChecked”。如果它返回'Nullable
Clemens
2012-04-10 11:15:58