【问题标题】:how to pass composite object to view model如何将复合对象传递给视图模型
【发布时间】:2013-07-20 09:34:13
【问题描述】:

我在 wpf 中使用 mvvm light。

目前我可以将字符串参数传递给 viewmodel 的命令,如下所示:

<TextBox Height="23" TextWrapping="Wrap" Text="TextBox" Name="textbox1"/>
<Button Command="{Binding ShowMessage}" Content="Click Me"
        CommandParameter="{Binding ElementName=textbox1, Path=Text}" />

我的问题是如何将像 Person 这样的复合类型传递给 ViewModel 的命令?

谢谢

【问题讨论】:

  • 同理,在 XAML 的命令参数中传递人员,只需将您的命令更改为 类型
  • @denismorozov 我如何从文本框中填充 XAML 中的 Person 实例?

标签: wpf mvvm mvvm-light


【解决方案1】:
<TextBox Height="23" TextWrapping="Wrap" Text="TextBox" Name="textbox1" Tag="{Binding Person}"/>
<Button Command="{Binding ShowMessage}" Content="Click Me"
CommandParameter="{Binding ElementName=textbox1, Path=Tag}" />

您可以使用 TextBox 的 Tag 属性,但我认为您的 MVVM 实现有问题,它是为您的视图保存数据的 ViewModel。但是在这里你将它从 View 发送到 VM 。我的意思是 Person 应该自动出现在你的 VM 中,而不是从 View 中发送。

【讨论】:

  • @你误会了我,假设我有一个用于创建人员(插入)的窗口(视图),我应该如何将人员数据传递给 viewmodel?
  • r.zarei,你误解了@ethicallogics。 :) 您的 VM 应该创建 Person 对象以响应从 Button 发送的命令。换句话说,你所有的逻辑都在虚拟机中——视图只是一个触发器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
  • 2020-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多