XAML TextBox isReadOnly Binding

时间:2015-10-19 00:16:09

标签: c# xaml binding textbox windows-8.1

我正在尝试使用Windows 8.1应用中的Binding只读取文本框。我尝试过一些无法正常工作的代码。 你能建议任何最简单的方法,我对Binding这个概念很新。

XAML

<TextBox x:Name="tbOne"  IsReadOnly="{Binding Path=setread, Mode=OneWay}" />
<Button Content="isReadonlyBinding" x:Name="isReadonlyBinding" Click="isReadonlyBinding_Click"></Button>

XAML.CS

public static readonly DependencyProperty IsReadOnlyProperty = DependencyProperty.Register(
    "setread",
    typeof(bool),
    typeof(MainPage),
    new PropertyMetadata(false)
    );

public bool setread
{
    get { return (bool)GetValue(IsReadOnlyProperty); }
    set { SetValue(IsReadOnlyProperty, value); }

}

private void isReadonlyBinding_Click(object sender, RoutedEventArgs e)
{
    setread = true;
}

2 个答案:

答案 0 :(得分:3)

试试这个。

<page X:name="PageName">
IsReadOnly="{Binding ElementName=PageName,Path=setread, Mode=OneWay}"

答案 1 :(得分:0)

在您的代码背后实施INotifyPropertyChanged。然后按如下方式修改属性:

private bool _setread;
public bool Setread
{
    get { return _setread; }
    set { 
      if(_seatread == value) return; 
      _setread = value;
      RaisePropertyChanged("Setread"); 
    }
}

x:Name="root"之类的根元素命名,并使用Setread绑定到ElementName=page。请注意,准备视图模型要好得多。视图模型代码隐藏只是一种快速的解决方法。