2013-07-01 61 views
0

让我们假设我在窗体上有一个文本框并且它被启用(用户可以输入他们想要的任何内容)。有一个OneWay绑定设置为一个字符串属性,所以当ViewModel更改属性时,文本框更新。现在当用户手动更改文本框中的值时会发生什么情况。 绑定是否被文本框的新值覆盖? 或者它只是记住值并保持绑定,所以当我在ViewModel中下次更新属性时,更改将反映在UI中?Silverlight OneWay绑定

+1

只要您调用OnPropertyChanged(“MyText”),文本框再次显示viewmodel中的值。你可以轻松设置一个测试项目。 – blindmeis

+0

所以它不会破坏在上述情况下的绑定? –

回答

1
public class VM : INPCBase 
{ 
    private string _myText; 
    public string MyText 
    { 
     get { return _myText; } 
     set { _myText = value; this.NotifyPropertyChanged(()=>MyText);} 
    } 

    public void Blup() 
    { 
     this.MyText = "blup"; 
    } 
} 

public partial class MainWindow : Window 
{ 
    private VM data = new VM(); 
    public MainWindow() 
    { 
     InitializeComponent(); 
     data.MyText = "sdfjksj"; 
     this.DataContext = data; 
    } 

    private void button1_Click(object sender, RoutedEventArgs e) 
    { 
     this.data.Blup(); 
    } 

    } 

XAML

<TextBox Text="{Binding MyText, Mode=OneWay}"/> 
<Button Click="button1_Click" /> 

绑定如果用户手动更改数值仍然有效不管。但用户永远不会从视图中获取值,因为它的OneWay