【问题标题】:MVVM Get value from closed windowMVVM 从关闭的窗口中获取值
【发布时间】:2013-01-29 08:50:30
【问题描述】:

我有一个小对话框,我可以在其中设置一个值。这个对话框的视图只有一个文本框和两个按钮。我将 textbox.Text 绑定到 ViewModel 中的属性 TbText。通过一个行为,我从它的视图模型中关闭视图。打开此对话框的代码如下所示:

AddLineDialog dialog = new AddLineDialog();
bool? result = dialog.ShowDialog();
if(result.HasValue && result.Value)
{
//Here i need the Text from the closed dialog
}
...

对话框关闭后,我需要访问属性 TbText 的值。我怎样才能做到这一点?

【问题讨论】:

  • 您应该从 ViewModel 中读取值。你在哪里存储/保存 ViewModel(s)?

标签: c# wpf mvvm


【解决方案1】:

您可以将 ViewModel 或任何类绑定到 Dialog 的 Datacontext:

    AddLineDialog dialog = new AddLineDialog();
    var vm = new LineDialogViewModel();
    dialog.DataContext = vm;

然后将文本框绑定到你的类中的一个属性

    <textbox Value="{Binding MyProperty}">

在这之后你可以读出你的课程

    if(dialog.ShowDialog())
    {
       var value = vm.MyProperty;
    }

【讨论】:

  • 只是一个建议,我花了很短的时间才理解你的代码。或许,下次最好采用更具描述性的名称。恕我直言,MyClass 不是最好的名字,当你在谈论 ViewModel 时。尽管如此,这是一个正确的解决方案。 :o)
【解决方案2】:

在Source中使用INotifyPropertyChanged接口,那么在文本框绑定应该如下所示

<TextBox Text={Binding Path=Name, 
                            Mode=TwoWay, 
                            UpdateSourceTrigger=PropertyChanged} />

这是一种双向绑定,因此每当用户输入在源属性中更新的数据时。如果您需要这些数据,您可以从用于绑定的模型属性中访问。

希望以上解决方案能帮助您解决问题

【讨论】:

    猜你喜欢
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 2016-09-04
    • 2018-06-12
    • 2015-09-30
    • 1970-01-01
    相关资源
    最近更新 更多