2013-05-29 82 views
0
private MyObject _myObject; 
public MyObject MyObject 
{ 
    get { return _myObject; } 
    set 
    { 
     if (_myObject != value) 
     { 
      _myObject = value; 
      RaisePropertyChanged(() => MyObject); 
     } 
    } 
} 


<TextBox Text="{Binding MyObject.MyObjectProperty}"/> 

当开始我的应用程序,为MyObject初始化时,MyObjectProperty显示在我的文本框,但是当我改变的MyObject的MyObjectProperty,文本框不更新!WPF数据绑定不工作

+2

您的MyObject是否也提高属性更改通知? – sthotakura

+0

你是说如果MyObject也实现INotifyPropertyChanged?如果答案是否定的,MyObject是Model对象,只有我的ViewModel实现INotifyPropertyChanged。 – Stacked

+0

为了使您的代码正常工作,您还需要在MyObject上实现INotifyPropertyChanged - 请参阅@blindmeis回答 – sthotakura

回答

1

你的MyObject对象是否实现INotifyPropertyChanged并调用它?

public class MyObject 
{ 
private string _prop; 
public string MyObjectProperty 
{ 
    get { return _prop; } 
    set 
    { 
    if (_prop!= value) 
    { 
     _prop = value; 
     RaisePropertyChanged(() => MyObjectProperty); 
    } 
} 
} 
} 

,默认UpdateSourceTrigger是引发LostFocus所以你必须离开文本框看到什么

0

除了什么blindmeis说,请确保您还指定双向的文本框结合。

<TextBox Text="{Binding Path=MyObject.MyProperty, Mode=TwoWay"}/> 
+0

你不需要它,像TextBox这样的控件具有默认的TwoWay模式。 – Stacked

+0

@Stacked - 好点,WPF也是如此。另一方面,Silverlight不会默认它。我总是忘记哪些设置适用于哪种技术。 :) –