WPF - 将文本框文本绑定到类属性

时间:2015-11-11 17:31:11

标签: wpf binding properties textbox

我正在对我的WPF项目进行一些更改,以降低其弃用率。 我要做的其中一件事就是将我的Textbox.Text值绑定到一个简单的,如下所示。

<TextBox x:Name="txtNCM"
         Grid.Column="1"
         Margin="5"
         MaxLength="8"
         Text="{Binding Path=Name}"
</TextBox>
public partial class wCad_NCM : UserControl, INotifyPropertyChanged
{
    private string name;
    public event PropertyChangedEventHandler PropertyChanged;

    public string Name
    {
        get { return name; }
        set
        {
            name = value;
            OnPropertyChanged("Name");
        }
    }

    protected void OnPropertyChanged(string name)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(name));
        }
    }

    public wCad_NCM()
    {
        InitializeComponent();

    }
}

每次我使用立即窗口显示名称的值时,它显示为 null 。我对此非常陌生,所以我不得不寻找类似的情况来适应,但我不知道如何使这项工作:(

1 个答案:

答案 0 :(得分:2)

您需要设置DataContext并为Name提供值。

为此,请更改构造函数以包含此内容:

public wCad_NCM()
{
    InitializeComponent();
    DataContext = this; // Sets the DataContext
    Name = "Test";
}

这应该可以使它工作,但通常是不好的做法。有关详细信息,请参阅http://blog.scottlogic.com/2012/02/06/a-simple-pattern-for-creating-re-useable-usercontrols-in-wpf-silverlight.html

此外,我尝试运行此操作并遇到名称隐藏问题。尝试使用Name以外的变量名,因为FrameworkElement已经包含它。