【发布时间】:2014-11-09 19:24:12
【问题描述】:
我尝试了解 WPF 中的数据绑定,并且我已经可以进行一些测试。
但我现在被困住了。 :(
为了更好地组织,我想将我的代码拆分为更多类,并将同一窗口的元素绑定到不同的类(实际上是绑定到不同类的属性)。
我想我必须将我的窗口的 DataContext 设置为“this”(窗口本身)并使用绑定路径来指定要使用的属性。
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;
}
- PrintSettings.cs
private int _copyCount = 1; //Copy count public string CopyCount { get { return "" + _copyCount; } }
-
编辑: 再次添加更多代码
【问题讨论】:
-
检查输出应该显示绑定是否成功。您只能绑定到属性,_printSettings 也必须如此。您也可以设置 FallBackValue,它会在绑定失败时显示。
-
是的,我做了后备测试。并显示回退值。 _printSetting 也必须是一个属性?让我试试……
标签: c# wpf data-binding