我尝试理解WPF中的数据绑定,我已经可以使用一些测试了。我但现在我已经紧张了。 :(
为了更好的组织,我想将我的代码分成更多的类,并将同一个Window的元素绑定到不同的类(实际上是不同类的属性)。
我想我必须将我的Window的DataContext设置为“this”(窗口本身)并使用Binding Path指定要使用的属性。
DataContext = this;
-
<Label Content="{Binding Path=_printSettings.CopyCount}"/>
所以f.e.我想绑定到CopyCount,它是一个返回字符串的属性。
该属性属于当前窗口的私有字段_printSettings中的实例。并且_printSetting实现了INotifyPropertyChanged并以双向原则通知。
但是在设计和运行期间标签是空的......
我还注意到在之前的测试中设计器中没有设置默认值。有谁知道实施?如果可能的话,不使用后备值。
-MainWindow.xaml.cs
<Label Content="{Binding ElementName=MainWindow,Path=PrintSettings.CopyCount, FallbackValue=[0]}">
-MainWindow.cs
private PrintSettings _printSettings = new PrintSettings();
public PrintSettings PrintSettings {
get {
return _printSettings;
}
}
public MainWindow()
{
DataContext = this;
}
private int _copyCount = 1; //Copy count public string CopyCount { get { return "" + _copyCount; } }
-
编辑: 再次添加更多代码
答案 0 :(得分:2)
绑定适用于/通过公共属性。 _printSettings不是属性。 Visual Studio“输出”窗口可以显示您遇到的任何绑定错误。
答案 1 :(得分:1)
_printSettings
和CopyCount
应为public
。
如果它没有帮助,它们在xaml中设置窗口名称和绑定将如下所示
<Label Content="{Binding ElementName=YourWindowName,Path=_printSettings.CopyCount}"/>
或
<Label Content="{Binding ElementName=YourWindowName,Path=DataContext._printSettings.CopyCount}"/>