首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > CAD教程 >

关于INotifyPropertyChanged的有关问题

2013-11-14 
关于INotifyPropertyChanged的问题TextBox Height23 NametextBox1Width120Text{Binding MyPro

关于INotifyPropertyChanged的问题


  <TextBox Height="23" Name="textBox1"  Width="120" 
   Text="{Binding MyProperty, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged }"/>


    public partial class MainWindow : Window
    {
        private classTest testClass = new classTest();

        public MainWindow()
        {
            InitializeComponent();
            textBox1.DataContext = testClass;
        }
    }

 public class classTest : INotifyPropertyChanged
    {
        private String myVar;

        public String MyProperty
        {
            get { return myVar; }
            set
            {
                myVar = "123";
                OnPropertyChanged(new PropertyChangedEventArgs("MyProperty"));
            }
        }

        #region INotifyPropertyChanged Members

        public event PropertyChangedEventHandler PropertyChanged;

        protected void OnPropertyChanged(PropertyChangedEventArgs e)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, e);
            }
        }

        #endregion
    }


如上代码TextBox绑定了MyProperty属性,想让TextBox每次不管他输入什么,我们都把TextBox.Text的值设置为"123"。
但是发现 OnPropertyChanged第一次通知成功并且更新界面后第二次以后的通知就没作用了。本次的value和上次的value相同OnPropertyChanged就不起作用吗?有什么办法解决呢?
[解决办法]
我测试了下你的代码。不存在这种问题啊。
输入数据后,每次  lostfocus 时,就又变成123了。可能这也是你说没有更新的地方吧。

具体你的使用场景不清楚。希望有所帮助
[解决办法]
这个问题有点意思,这个可能涉及到TextBox更底层的东西了,楼主的代码整体上没有什么问题,后台也进行了更新,没有反映到前台是不是涉及到优先级的问题,我们知道Text属性是跟TextBox的静态属性TextProperty相关联,赋值也是通过SetTextProperty这个函数,是不是被认为前台输入的优先级高于后台的执行?这个帮顶一下吧,看有没有大神~

热点排行