コードでプロパティバインディング(WPF)を設定しようとしています。コードは正常にコンパイルされますが、バインドするプロパティが設定されることはありません。以下は最小限の例です。
ビューモデル:
public class FooViewModel: INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private string _value;
public string Value
{
get { return _value; }
set
{
_value = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("Value"));
}
}
}
景色:
public class FooView: Window
{
public string Value
{
get { return Title; }
set
{
// Breakpoint here never hits!
Title = value;
}
}
public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(string), typeof(FooView));
public FooView()
{
Binding valueBinding = new Binding("Value");
valueBinding.Mode = BindingMode.OneWay;
SetBinding(ValueProperty, valueBinding);
}
}
「main()」:
FooView view = new FooView();
FooViewModel model = new FooViewModel();
view.DataContext = model;
view.Show();
model.Value = "ABC";
FooView.Value
が設定されているときに-setterが呼び出されることを期待していましたmodel.Value
。Binding.Source
また、プロパティをモデルに明示的に設定してみました。バインディングはどのように設定する必要がありますか?