【问题标题】:Transport property from viewmodel to view via xaml binding通过 xaml 绑定将属性从视图模型传输到视图
【发布时间】:2017-11-04 22:57:10
【问题描述】:

我想将令牌从视图模型转移到 wpf/xaml/mvvmlight 中的视图。此标记是视图模型和视图中的公共属性。在 viewmodel-ctor 中创建了令牌(简单的 guid)。这个确切的令牌应该被传输到视图的令牌属性。在这里,我读到了 viewmodel 和 view 属性之间的这种绑定可以通过 xaml 绑定来完成。但我不知道该怎么做。

后台是mvvmlight的使者。我希望视图能够仅向他的特定视图模型发送消息,因此我必须为此视图/视图模型对使用通用的唯一令牌。

或者,如果您有其他想法,我愿意接受,所以请告诉我。谢谢大家!

【问题讨论】:

  • 在您的视图模型中实现 INotifyPropertyChanged 并从您的属性中调用 NotifyPropertyChange 委托。在此之后,您需要在视图中使用属性。举个简单的例子,have a look here
  • 谢谢,所以这里的关键字是DependencyProperty?我知道 inpc,但认为它只是用于更新 xaml 视图,而不是代码隐藏视图类。我明天就这样。到目前为止感谢
  • 我不能代表 DependencyProperty,因为到目前为止我从未在 viewmodel 中使用过它。我使用 INotifyPropertyChanged 进行视图和 ViewModel 之间的属性绑定。
  • 我使用 inpc 来更新 xaml ui。但从来没有用它来设置视图类属性值到 viewmodel 属性值,而不在 xaml ui 上显示这个值。但我会试试你的链接。可悲的是,现在是午夜过后 ;)
  • 不幸的是,您根本不清楚您在问什么。 “令牌”一词可能意味着任何种类的事物,“传输”也可以,而且您的问题丝毫没有描述视图一旦拥有该“令牌”将做什么。甚至视图是什么。对于 XAML 绑定,目标属性(即在视图中)必须是依赖属性。但它可能已经是,这取决于您如何设置视图及其数据上下文以及您实际希望“令牌”绑定到的位置以及您希望该目标对它做什么。请修正您的问题,以免其含糊不清。

标签: c# mvvm-light


【解决方案1】:

我认为您只想在视图的代码隐藏中捕获消息?

所以在你的虚拟机中:

Messenger.Default.Send<MessageObjType>(TheMessageObject, "IdentifyingToken");

在您查看代码隐藏时,可能在构造函数中:

Messenger.Default.Register<MessageObjType>(this, "IdentifyingToken", 
(TheMessageObject) => 
  {
    // Do something with TheMessageObject
  });

这取决于您在做什么,尽管为此使用绑定和 RaisePropertyChanged 而不是消息系统可能更有意义...

【讨论】:

  • 不抱歉 - 这不是我想要的。在您的案例/代码中,您指的是识别令牌,即视图模型和视图所知道的。但在我的情况下,这是一个动态令牌(如 guid),视图模型创建并且视图应该知道将私有的标记化消息发送到其视图模型。在这个 SO 帖子 link“可能的解决方案选项 1”中,他描述了他的方式,但我不明白,我不允许在那里发表评论。
猜你喜欢
  • 1970-01-01
  • 2010-12-02
  • 2011-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多