0

要求

我的要求是在同一窗口上的不同只读控件(如标签或文本块)中显示文本框值。

解决方法

TextBox 和 TextBlock 的目标属性 Text 是绑定到同一源对象的数据(字符串类型的简单 CLR 属性)。有界源属性通过 INotifyPropertyChanged 实现属性更改通知。

观察

在运行时,文本框变为只读,用户无法手动更改文本框的文本。问题:文本框的可编辑性如何受到文本块存在的影响。我知道 TextBox 默认绑定模式是两种方式,而 textblock 是一种方式。但我无法理解这背后的原因。另外,我应该如何解决这个问题。

XAML

<TextBox x:Name="txtBox" Text="{Binding Name }"/>
<TextBlock Text="{Binding Name}"/>

视图模型

private string _name = "Welcome";
public string Name
{
    get
    { return _name; }
    set
    {
        if(_name!= value)
        {
            _name = value;
            RaisePropertyChanged("Name");
        }
    }
}

即使我将 TextBlock 的 Text 属性绑定的数据设置为 TextBox 的 text 属性,TextBox 仍然是只读的。即使我使用标签控件而不是文本块,我也会得到相同的行为。

 <TextBox x:Name="txtBox" Text="{Binding Name }"/>
 <TextBlock Height="20" Text="{Binding ElementName=txtBox, Path=Text}"/>

请帮助我解释这种行为背后的原因。

4

0 回答 0