У меня есть 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;
}
.. который вызывается, когда нажата комбинация клавиш.
Вот ваши маленькие опечатки!
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}"/>