StaticResource
对的绑定
Source
,并使用绑定的
Path
,如下所示:
<UserControl ...Existing attributes... DataContext="{Binding Source={StaticResource test},
Path=viewModel}">
如果你
真正地
想要
DataContext
在“附件”格式中,您可以这样做:
<UserControl.DataContext>
<Binding Path="viewmodel" Source="{StaticResource test}" />
</UserControl.DataContext>
...但你必须
viewModel
一个实际的属性,它不会作为字段工作。您的代码还可能生成
InvalidOperationException
系统窗户。同一AppDomain中的应用程序实例。
如果
App
您的应用程序类是从
App.xaml.cs
,因为您用于声明资源的格式将创建它的新实例。即使使用上面的“内联”语法,也会发生这种情况。它不是由绑定引起的,而是由资源声明引起的。
我的
首选
这样做的方法是只为实现的控件创建一个视图模型类
INotifyPropertyChanged
,我们就叫它吧
MyControlVm
举个例子。然后设置
数据上下文
这样地:
<UserControl.DataContext>
<local: MyControlVm />
</UserControl.DataContext>
这将允许您拥有多个
UserControl
没有他们都共享相同的状态(作为您的
static
的属性
应用程序
会)。