Привязать свойство IsEnabled к логическому значению в WPF
У меня есть TextBox
который должен быть включен / отключен программно. Я хочу добиться этого с помощью привязки к Boolean
, Здесь TextBox
XAML:
<TextBox Height="424" HorizontalAlignment="Left"
Margin="179,57,0,0" Name="textBox2"
VerticalAlignment="Top" Width="777"
TextWrapping="WrapWithOverflow"
ScrollViewer.CanContentScroll="True"
ScrollViewer.VerticalScrollBarVisibility="Auto"
AcceptsReturn="True" AcceptsTab="True"
Text="{Binding Path=Text, UpdateSourceTrigger=PropertyChanged}"
IsEnabled="{Binding Path=TextBoxEnabled}"/>
Обратите внимание, что свойство Text также связано; это полностью функционально, что заставляет меня думать, что это не проблема DataContext.
Тем не менее, когда я вызываю этот код:
private Boolean _textbox_enabled;
public Boolean Textbox_Enabled
{
get { return _textbox_enabled; }
set
{
OnPropertyChanged("TextBoxEnabled");
}
}
Это не работает. Чтобы предоставить дополнительную информацию, свойство TextBox_Enabled изменяется этим методом:
public void DisabledTextBox()
{
this.Textbox_Enabled = false;
}
.. который вызывается при нажатии комбинации клавиш.
1 ответ
Решение
Вот твои маленькие опечатки!
private Boolean _textbox_enabled;
public Boolean TextboxEnabled // here, underscore typo
{
get { return _textbox_enabled; }
set
{
_textbox_enabled = value; // You miss this line, could be ok to do an equality check here to. :)
OnPropertyChanged("TextboxEnabled"); //
}
}
Еще одна вещь для вашего xaml - обновить текст до vm/datacontext.
Text="{Binding Path=Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsEnabled="{Binding TextBoxEnabled}"/>