Ich fürchte, ich habe eine dumme Frage, für die ich keine Antwort finden kann.WPF Checkbox IsEnabled Bindung
Ich versuche, einen Filter für Tags zu implementieren: Es hat ein Textfeld, in das Sie Tags eingeben können, sowie markierte und nicht markierte Kontrollkästchen. Ich möchte, dass Untagged deaktiviert wird, wenn die Textbox Text enthält.
Ich dachte, das einfach sein würde:
Meine Viewmodel:
private bool _untaggedEnabled = true;
public UntaggedEnabled {
get {
return _untaggedEnabled;
} set {
_untaggedEnabled = value;
OnPropertyChanged(nameof(UntaggedEnabled));
}
}
Codebehind Meine Ansicht ist: (ja, ich dies in XAML allein tun könnte, aber wenn ich in XAML gut waren wouldn I ‚t hier)
private void tagsList_TextChanged(object sender, TextChangedEventArgs e) {
_viewModel.UntaggedEnabled = !string.IsNullOrWhiteSpace(tagsList.Text);
}
Und meine Ansicht:
<TextBox x:Name="tagsList" Text="{Binding TagsList}" />
<CheckBox Content="Untagged" IsEnabled="{Binding UntaggedEnabled}" IsChecked="{Binding Untagged} />
Es gibt eine Reihe anderer Steuerelemente und gebundener Eigenschaften in der Komponente, die alle gut funktionieren, außer IsEnabled
.
Ich kann Debug-Ausgaben überall pfeffern und alles wird entsprechend aktualisiert, wenn es soll, aber nichts auf der tatsächlichen IsEnabled-Eigenschaft.
Ich habe auch Mode=TwoWay
und UpdateSourceTrigger=PropertyChanged
auf die IsEnabled XAML hinzugefügt, ohne Erfolg.
Ich denke, das sollte wirklich einfach sein. Kann jemand sehen, was ich vermisse?
Haben Sie eine [Datacontext] (https://msdn.microsoft.com/en-us/library/system.windows eingestellt .frameworkelement.datacontext (v = vs.110) .aspx)? – Link
@Link ja - es gibt zahlreiche andere Steuerelemente, die alle an denselben Datenkontext/VM gebunden sind, die gut funktionieren. – jleach
Es gibt keine Ereignisdeklaration in TextBox :) –