数据绑定到成员属性并提供设计时间值

时间:2014-09-16 06:36:49

标签: c# wpf data-binding

我尝试理解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;
}
  • PrintSettings.cs
private int _copyCount = 1;

//Copy count
public string CopyCount 
{
    get {
        return "" + _copyCount;
    }
}

-

编辑: 再次添加更多代码

2 个答案:

答案 0 :(得分:2)

绑定适用于/通过公共属性。 _printSettings不是属性。 Visual Studio“输出”窗口可以显示您遇到的任何绑定错误。

答案 1 :(得分:1)

_printSettingsCopyCount应为public

如果它没有帮助,它们在xaml中设置窗口名称和绑定将如下所示

<Label Content="{Binding ElementName=YourWindowName,Path=_printSettings.CopyCount}"/>

<Label Content="{Binding ElementName=YourWindowName,Path=DataContext._printSettings.CopyCount}"/>