【问题标题】:Silverlight OneWay bindingSilverlight 单向绑定
【发布时间】:2013-06-28 10:03:32
【问题描述】:

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

【问题讨论】:

  • 就您调用 OnPropertyChanged("MyText") 而言,文本框会再次显示您的视图模型中的值。您可以轻松设置测试项目。
  • 这样就不会破坏上述场景中的绑定?

标签: silverlight mvvm binding viewmodel


【解决方案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

【讨论】:

    猜你喜欢
    • 2011-09-06
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 1970-01-01
    • 2011-09-14
    相关资源
    最近更新 更多