ich möchte einige WPF-Elemente an Werte aus einem Array binden. Mit TextBox und DatePicker klappt auch alles, aber ich komme einfach nicht drauf, wie ich eine CheckBox an einen Bool-Wert binden kann.
Ich habs schon mit DataContext, Checked und IsChecked probiert! Die CheckBox bleibt immer leer - wie kann man eine Bindung an eine Boolean-Variable realisieren?
OO gibts seit Platon - hatte der auch C#?
Und Google oder die Dokumentation hat dazu nichts ausgespuckt?
IsSelected IsChecked ist die richtige Eigenschaft.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
IsChecked funktioniert einwandfrei.
<CheckBox Grid.Row="0" IsChecked="{Binding TrueValue}" />
<CheckBox Grid.Row="1" IsChecked="{Binding FalseValue}" />
<CheckBox Grid.Row="2" IsChecked="{Binding NullableValue}" IsThreeState="True" />
public TestViewModel()
{
TrueValue = true;
FalseValue = false;
NullableValue = null;
}
public bool FalseValue...
public bool? NullableValue...
public bool TrueValue...
Du kämpfst wahrscheinlich an anderer Stelle mit Binding-Fehlern. Informationen dazu findest du im Output.
IsSelected ist die richtige Eigenschaft.
Nö, diese Eigenschaft gibt es bei einer WPF-Checkbox nicht. 👅
Danke für den Hinweis, ich habs weiter probiert und die Lösung gefunden:
die Bindung war schon zu Beginn korrekt erfolgt (Abfrage mit Debug), aber ich musste nochmal 'InitializeComponent()' aufrufen, damit die Ansicht der anfangs leeren CheckBox aktualisiert wurde.
OO gibts seit Platon - hatte der auch C#?
Ähm, was? 🤔
Kannst du mal bitte zeigen, was du da machst?
InitializeComponent();
ist nur einmal im Konstruktor im Code-Behind notwendig.
ich habe dem DockPanel-Bereich den Frame (mit der CheckBox) nochmals erneut zugewiesen, damit sich die Ansicht aktualisiert. So wird ja der Frame erneut geladen - was InitializeComponent() ausführt.
Page p = new FrameX();
haupt = p;
// Checkbox in p aktualisiert, und jetzt die Page erneut zugewiesen
haupt = p;
Ich dachte, dass Änderungen an der Ausgabe automatisch angezeigt werden, aber es klappte doch nicht. Erst als ich dann Frame p erneut zuwies, wurde die Ansicht aktualisiert
OO gibts seit Platon - hatte der auch C#?
Zeige doch bitte das ViewModel und die View.
Zu diesen Code-Fragmenten kann man gar nichts sagen, ausser, du musst da irgendwas falsch machen
Hi CWolle,
wie kann man eine Bindung an eine Boolean-Variable realisieren?
Gar nicht! Man kann immer nur an Eigenschaften binden, nicht an Variablen. Da du am Rande erwähnst, daß die Werte in einem Array liegen, hilft dir evtl. [Artikel] MVVM und DataBinding weiter (Strg-F: ItemsControl bzw. ObservableCollection).
Weeks of programming can save you hours of planning