我正在对我的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 。我对此非常陌生,所以我不得不寻找类似的情况来适应,但我不知道如何使这项工作:(
答案 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
已经包含它。