【发布时间】:2013-08-02 04:30:06
【问题描述】:
我有一个带有文本框的 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..../>
无需为容器或窗口设置数据上下文。另外,我不知道如何正确地将窗口的数据上下文设置为我的属性,因为它是一个内部类,具有命名空间的命名空间。窗口类或类似的东西。
为文本框提供数据源的正确方法是什么,或者如果不可能,我如何引用内部类并将源设置为窗口?
【问题讨论】:
-
在此处查看答案中的示例:stackoverflow.com/questions/17995743/…
-
那个答案做了我所做的,所以没有帮助。它不会在没有在代码隐藏中初始化的情况下在文本框中设置源