我正在尝试在后面的 C# 代码而不是 XAML 中进行数据绑定。在 Expression Blend 2 中创建的 XAML 绑定到我的 CLR 对象工作正常。我的 C# 实现仅在应用程序启动时更新,之后对 CLR 的后续更改不会更新我的标签内容。
这是有效的 XAML 绑定。首先在我的 Window.Resources 中创建了一个 ObjectDataProvider。
<ObjectDataProvider x:Key="PhoneServiceDS"
ObjectType="{x:Type kudu:PhoneService}" d:IsDataSource="True"/>
和标签内容绑定:
<Label x:Name="DisplayName" Content="{Binding
Path=MyAccountService.Accounts[0].DisplayName, Mode=OneWay,
Source={StaticResource PhoneServiceDS}}"/>
效果很好。但我们希望在 C# 中进行此设置,以便我们可以独立更改 XAML(即新皮肤)。我的一次工作 C# 如下:
Binding displayNameBinding = new Binding();
displayNameBinding.Source =
PhoneService.MyAccountService.Accounts[0].DisplayName;
displayNameBinding.Mode = BindingMode.OneWay;
this.DisplayName.SetBinding(Label.ContentProperty, displayNameBinding);
这是在 InitializeComponent(); 之后的我的 MainWindow 内。
任何见解为什么这只适用于启动?