日期:2014-05-17  浏览次数:20966 次

使用MVVM模式进行WPF开发,数据绑定问题
问题如下:
     我将MainViewModel设置成MainWindow的DataContext,这个时候修改用户名代表的TextBox,此时不会调用MainViewModel.cs中的
set
            {
                
                if (userinfo == value)
                {
                    return;
                }
                userinfo = value;
                RaisePropertyChanged("UserInfo");
            }
,而是调用
public class User
    {
        public int Id { get; set; }

        public string Name { get; set; }

        public string Password { get; set; }
    }
中的Set方法,但是为什么会通知界面进行更新呢?
User.cs并没有实现INotifiPropertyChange接口,而且也不会调用MainViewModel.cs中的Set方法。
希望各位大神指导下,为什么只调用了User.cs的set方法,却也通知了界面进行更新?



MainWindow.xaml

<TextBlock Grid.Column="0" Grid.Row="0" Text="用户名:"></TextBlock>
        <TextBox Grid.Column="1" Grid.Row="0">
            <TextBox.Text>
                <Binding Path="UserInfo.Name" UpdateSourceTrigger="PropertyChanged"  Mode="TwoWay">
                <Binding.ValidationRules>
                    <!--<ExceptionValidationRule />-->
                    <local:UserValidate ValidateType="UserName" ></local:UserValidate>
                </Binding.ValidationRules>