数据绑定到成员属性并提供设计时值
本文关键字:成员 属性 数据绑定 | 更新日期: 2023-09-27 18:22:10
我试图理解WPF中的数据绑定,我已经可以进行一些测试了
但我现在很紧张(
为了更好地组织,我想将代码拆分为更多的类,并将同一个Window的元素绑定到不同的类(实际上绑定到不同类的属性)。
我想我必须将窗口的DataContext设置为"this"(窗口本身),并使用绑定路径来指定要使用的属性。
DataContext = this;
-
<Label Content="{Binding Path=_printSettings.CopyCount}"/>
所以f.e.我想绑定到CopyCount,它是一个返回字符串的属性
该属性属于当前窗口的私有字段_printSettings中的实例。_printSetting实现了INotifyPropertyChanged,并以双向原则进行通知。
但是标签在设计和运行时是空的。。。
我还注意到,在我之前的测试中,设计器中没有设置默认值。有人知道实现吗?如果可能,不使用回退值。
-主窗口.xaml.cs
<Label Content="{Binding ElementName=MainWindow,Path=PrintSettings.CopyCount, FallbackValue=[0]}">
-主窗口.cs
private PrintSettings _printSettings = new PrintSettings();
public PrintSettings PrintSettings {
get {
return _printSettings;
}
}
public MainWindow()
{
DataContext = this;
}
- 打印设置.cs
private int _copyCount = 1; //Copy count public string CopyCount { get { return "" + _copyCount; } }
-
编辑:再次添加更多代码
绑定针对/通过公共属性工作_printSettings不是属性。Visual Studio"输出"窗口可以显示您遇到的任何绑定错误。
_printSettings
和CopyCount
应为public
。
如果没有帮助,那么在xaml Set窗口中,Name和binding将看起来像这个
<Label Content="{Binding ElementName=YourWindowName,Path=_printSettings.CopyCount}"/>
或
<Label Content="{Binding ElementName=YourWindowName,Path=DataContext._printSettings.CopyCount}"/>