当嵌套属性发生变化时,如何使对象引发“PropertyChanged”或在父级上执行方法?

时间:2016-10-27 15:36:14

标签: c# wpf xaml mvvm

我有一个模型,我不希望它实现INotifyPropertyChanged:

public class PeopleModel
{
    public string name { get; set; }
    public string company { get; set; }
}

现在我有一个ViewModel:

public class DetailViewModel : CustomViewModelBase
{
    private PeopleModel _person;
    public PeopleModel person
    {
        get
        {
            return _person;
        }

        set
        {
            _person=value;
            OnPropertyChanged();
        }
    }
    public ICommand customOnUpdateCommand { get; set; }
}

现在,使用WPF并仅使用XAML,我将文本框内容绑定到名称(整个窗口已绑定到ViewModel):

<StackPanel
    DataContext="{Binding Path=person}">
    <DockPanel>
        <Label Content="name" Target="{Binding ElementName=person_TextBox}" />
        <TextBox x:Name="person_TextBox"
                            Text="{Binding Path=name, UpdateSourceTrigger=PropertyChanged}">

        </TextBox>
    </DockPanel>
</StackPanel>

现在,我想执行以下操作:当我更改此person对象中的name属性时,person对象应在ViewModel中引发“PropertyChanged”。或者,执行自定义命令,或执行一个方法(这会更好)。

我已经尝试过数据触发器,System.Windows.Interactivity或使用RelativeSource,但它们不起作用,也许我没有正确使用它们。

如何正确实现这一目标?

注意:我已经确认当文本框发生更改时,对象中的名称将正确更改。所以绑定过程是正确的。

0 个答案:

没有答案