我想在后面的C#代码而不是XAML做数据绑定。在Expression Blend 2中创建的XAML绑定到我的CLR对象工作正常。我的C#实现仅在应用程序启动后更新,此后CLR的更改不会更新我的标签内容。C#数据绑定不更新WPF
这是工作的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);
这是在我的MainWindow之后InitializeComponent();
任何洞察为什么这只适用于启动?
我会用对this.TryFindResource(“PhoneServiceDS”)的调用来替换displayNameBinding.Source,所以它完全等同于他的XAML,但是否则我正准备像这样发布解决方案。 – 2008-12-10 19:05:04