我有一个带有文本框的 wpf gui 页面,该文本框绑定到我的窗口中的内部类的属性。我已经定义了要绑定的文本框,如下所示:
XAML:
<TextBox Name="shhh" Text="{Binding Path=derpDerp, Mode=OneWay,
UpdateSourceTrigger=PropertyChanged}" />
代码隐藏:
namespace ...
{
public partial class MainWindow : Window
{
innerclass definition....
public Herp derp;
public MainWindow()
{
...
derp = new Herp();
shhh.DataContext = derp;
...
}
{code that changes derp.derpDerp}
}
}
内部类:
public class Herp : INotifyPropertyChanged
{
private secret = "";
public event PropertyChangedEventHandler PropertyChanged;
public Herp(string derp)
{
secret = derp;
}
public string derpDerp
{
get{ return secret; }
set{ secret = value; onPropertyChanged("derpDerp"); }
}
private void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
我想知道是否可以在 xaml.xml 中声明文本框的来源。我见过很多例子说将文本框设置为父级的数据上下文,如窗口或文本框周围的容器。但是,如果只有 1 个控件需要数据,我觉得不是很直观。如果我有几个文本框和一个带有数据上下文的堆栈面板,那将是有意义的。
在我的实现中,我在代码中创建对象并将数据上下文设置为文本框。是否有等效的 xaml 解决方案?
就像是:
<TextBox Source="something" Path=derpDerp..../>
无需将数据上下文设置为容器或窗口。另外,我不知道如何将窗口的数据上下文正确设置为我的属性,因为它是一个内部类,其命名空间为 namespace.the 窗口类或类似的东西。
给文本框一个数据源的正确方法是什么,或者如果不可能,我如何引用内部类并将源设置为窗口?