我有一个 Silverlight 页面,它背后使用一个 MVVM 来处理所有正在进行的数据位。
使用以下方法为页面设置数据上下文:
DataContext="{Binding AddNewClientViewModel, Source={StaticResource ServiceLocator}}"
ServiceLocator 是一项服务,它允许我使用 IoC 容器创建和注入适当的 VM。
这一切都很好。
现在我有一个像这样的DataForm:
<df:DataForm CurrentItem="{Binding NewClient}" AutoGenerateFields="False" >
<df:DataForm.NewItemTemplate>
<DataTemplate>
<StackPanel>
<df:DataField>
<TextBox Text="{Binding ClientName}" />
</df:DataField>
<df:DataField>
<TextBox Text="{Binding Property_on_the_VM_not_on_NewClient}" />
</df:DataField>
</StackPanel>
</DataTemplate>
</df:DataForm.NewItemTemplate>
</df:DataForm>
好的,所以这个数据表单绑定到我的 ViewModel 上的 NewClient 属性。第一个 DataField 绑定到 NewClient.ClientName。我想绑定到根 ViewModel 挂起的属性的第二个 DataField。
我知道绑定时可以传入“源”参数,如果我有虚拟机的静态资源或类似资源,我可以指出它,但我没有。如何将此绑定与父 VM 上的属性链接?
编辑
在下面 Jobi 的帖子之后,我尝试了以下方法:
<TextBox DataContext="{Binding DataContext, ElementName=root}" Text="{Binding MyProperty}" />
我的顶级控制:
x:Name="root"
DataContext="{Binding AddNewClientViewModel, Source={StaticResource ServiceLocator}}"
让这个工作没有骰子......