動作しませ結合し、私ははなぜ2つの方法は、私は私のViewModelでは、2つの方法</p> <p>をバインドしようとしている
private Temporary _selectedCompany;
public Temporary SelectedCompany
{
get
{
return this._selectedCompany;
}
set
{
if (this._selectedCompany == value || value == null)
return;
this._selectedCompany = value;
this.SelectedCompany.CompanyName = "TestName";
base.OnPropertyChanged("SelectedCompany");
}
}
Temporary
はあなたのために行うだろうクラスに似たクラスを実際にされていCompanyAddress(名前、国、電話など)であり、EntityFrameworkによって作成されたものです。対応するビューで
、XAMLはViewModelにでは何もありませんカスタムコントロールの後ろにコードで
// Dependency Property
public static readonly DependencyProperty CompanyNameProperty =
DependencyProperty.Register("CompanyName", typeof(string),
typeof(CompanyDetail), null);
// .NET Property wrapper
public string CompanyName
{
get { return (string)GetValue(CompanyNameProperty); }
set { SetValue(CompanyNameProperty, value); }
}
<local:CompanyDetail CompanyName="{Binding SelectedCompany.CompanyName}"/>
です。私は次のように入力して値を変更し、[OK]ボタンをクリックした場合、私は、そこに以下のXAML
ので<TextBox Text="{Binding CompanyName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource AncestorType=UserControl, AncestorLevel=1, Mode=FindAncestor}}" />
、コントロールが読み込まれ、画面に表示されたとき、私は値を参照してください「テスト名は」TextBox
であるが、値が更新されていないことがわかります。
私はそれがすべての参照型のいずれかの方法だと思うので、私はそれがINotifyPropertyChangedとは何の関係もないと仮定していますか?
私は間違っていますか?
により、双方向をバインドする依存関係プロパティを宣言することで明示的に設定することでよろしいAncestorLevel =です1? AncestorTypeを指定する場合は指定する必要はありません –