【发布时间】:2014-12-06 05:21:09
【问题描述】:
一个新手绑定问题。我的 mainview.xaml 调用了多个用户控件,例如:
<i:InkRichTextView RichText ="{Binding LastNote}" ... />
其中 RichText 是 InkRichTextView.xaml 用户控件代码隐藏中的依赖属性,LastNote 是 mainviewmodel 的属性。
MainViewModel 通过 App.xaml 中的 DataTemplate 与 MainView 隐式关联,例如:
<DataTemplate DataType="{x:Type vm:MainViewModel}">
<v:MainView/>
</DataTemplate>
我想将用户控件 InkRichTextView 设置为它自己的 ViewModel,其属性保存在 MainViewModel 中,类似于:
<i:InkRichTextView RichText ="{Binding LastNote}" DataContext="{Binding ucFirstControl}" ... />
但是当我这样做时,我的用户控件 InkRichTextView 会丢失 LastNote 的上下文(或在其代码隐藏中失去对其依赖项属性的访问权,或两者兼而有之??)。
如何维护与 LastNote 的 MainViewModel 属性的绑定,同时仍为用户控件提供单独的 DataContext?
(请记住,UserControl 在其代码隐藏中定义了依赖属性)。
感谢您对此的任何帮助。
【问题讨论】:
-
啊,又过了一周,另一个人试图为他们的 UserControl 创建一个 ViewModel。想知道你为什么在这方面遇到困难吗?这是因为你不应该这样做。想一想——TextBox 有 ViewModel 吗?不,它公开了您将 your ViewModel 绑定到的属性。这就是你的 UserControl 应该做的。更多详情请看这里:stackoverflow.com/…
标签: wpf xaml mvvm data-binding