Ich erstelle Checkboxen dynamisch und möchte sie überprüfen, je nachdem, welche Optionen ausgewählt werden sollen.Wie Checkboxen dynamisch überprüft werden?
Ich habe folgende XAML:
<StackPanel>
<StackPanel x:Name="ArmingPanel" />
</StackPanel>
Und den folgenden Code:
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);
}
}
}
Je nachdem, welche Flags gesetzt wurden, nach der sollte auf true
oder false
eingestellt werden:
IsChecked = (options.Options.Arming & arming) != Arming.None
Ich kann diesen Wert richtig eingestellt w sehen Wenn ich debugge, aber wenn die Checkboxen auf dem Bildschirm aufgelistet sind, sind sie immer deaktiviert.
Wie kann ich sie wie erwartet überprüfen lassen?
Die 'IsChecked'-Eigenschaft, indem Sie Ihre Bindung festgelegt ist. – Matten
Etwas sagt mir, dass deine Bindung gebrochen ist. Sie sollten Ihre IsChecked-Eigenschaft nicht manuell festlegen, wenn Sie sie an etwas binden möchten. –
Wie Matten sagte, wird "IsChecked" sofort nach der Code-Eingabe durch "Bindung" gesetzt. Überprüfen Sie Ihren 'FlagsEnumValueConverter', wenn 'Nullable
Clemens