私は Silverlight の初心者で、単純な Silverlight バインド サンプルを機能させることができません!
ロード中にリスト内のドキュメントの数を表示するビューモデルを作成する必要があります。
INotifyPropertyChanged を実装する基本クラスを作成しました。
public abstract class BaseViewModel : INotifyPropertyChanged {
protected BaseViewModel() {}
#region INotifyPropertyChanged Members
protected void OnPropertyChanged(string propertyName) {
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
「CountDocs」プロパティを持つ子クラスを作成しました。
public class DocumentViewModel : BaseViewModel {
public DocumentViewModel () {
...
}
...
public int CountDocs {
get { return countDocs; }
set {
if (countDocs != value) {
countDocs = value;
OnPropertyChanged("CountDocs");
}
}
}
public int countDocs;
}
次の内容の DocumentViewModel.xaml があります。
<UserControl
...
xmlns:vm="clr-namespace: ... .ViewModels" >
...
<UserControl.Resources>
<vm:DocumentViewModel x:Key="viewModel"/>
</UserControl.Resources>
...
<TextBlock x:Name="CounterTextBlock" Text="{Binding Source={StaticResource viewModel}, Path=CountDocs}"></TextBlock>
つまり、子クラスの名前空間について言及し、子クラスのリソースをキー「viewModel」で作成し、テキストブロックのバインディングをこのオブジェクトのプロパティ「CountDocs」に入力しました。
問題は、CountDocs プロパティが TextBlock を一度だけ満たすことです: 読み込み時です。しかし、CountDocs を設定すると、TextBlock がいっぱいになりません。
バインディングの Mode プロパティを使用して DataContext を使用しようとしましたが、まだ機能しません。
バインディングに何か問題がありますか?オブジェクトの CountDocs プロパティが変更されたときに ViewModel を更新するにはどうすればよいですか?
ありがとう