XAML ではなく、C# コード ビハインドでデータ バインディングを実行しようとしています。Expression Blend 2 で作成した CLR オブジェクトへの XAML バインディングは正常に機能します。私の C# 実装は、アプリケーションが開始されたときにのみ更新され、その後 CLR に変更を加えても、ラベルの内容は更新されません。
これが実際の XAML バインディングです。最初に、ObjectDataProvider が Window.Resources で作成されます。
<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 内にあります。
これが起動時にのみ機能する理由は何ですか?