Bind IsEnabled property to Boolean in WPF

北战南征 提交于 2019-12-31 03:48:05

问题


I have a TextBox which needs to be enabled / disabled programmatically. I want to achieve this using a binding to a Boolean. Here is the 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}"/>

Notice the Text property is bound as well; it is fully functional, which makes me think it is not a DataContext issue.

However, when I call this code:

private Boolean _textbox_enabled;
public Boolean Textbox_Enabled
{
    get { return _textbox_enabled; }
    set
    {
        OnPropertyChanged("TextBoxEnabled");
    }
}

It does not work. To give further information, the TextBox_Enabled property is changed by this method:

public void DisabledTextBox()
{
     this.Textbox_Enabled = false;
}

..which is called when a key combination is pressed.


回答1:


Here are your little typos!

    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"); // 
        }
    }

Another thing for your xaml to update the text to the vm/datacontext

Text="{Binding Path=Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsEnabled="{Binding TextBoxEnabled}"/>


来源:https://stackoverflow.com/questions/25467287/bind-isenabled-property-to-boolean-in-wpf

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!