我有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;
}
..按下组合键时调用。
答案 0 :(得分:7)
这是你的小错字!
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}"/>