gpt4 book ai didi

银光装订

转载 作者:行者123 更新时间:2023-12-03 10:30:58 25 4
gpt4 key购买 nike

我有一个 Silverlight 页面,它背后使用一个 MVVM 来处理所有正在进行的数据位。

使用以下方法为页面设置数据上下文:

DataContext="{Binding AddNewClientViewModel, Source={StaticResource ServiceLocator}}"

ServiceLocator 是一项服务,它允许我使用 IoC 容器创建和注入(inject)适当的 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>

好的,所以这个数据表单绑定(bind)到我的 ViewModel 上的 NewClient 属性。第一个 DataField 绑定(bind)到 NewClient.ClientName。我想绑定(bind)到根 ViewModel 挂起的属性的第二个 DataField。

我知道绑定(bind)时可以传入“源”参数,如果我有虚拟机的静态资源或类似资源,我可以指出它,但我没有。如何将此绑定(bind)与父 VM 上的属性链接?

编辑

在下面 Jobi 的帖子之后,我尝试了以下方法:
<TextBox DataContext="{Binding DataContext, ElementName=root}"  Text="{Binding MyProperty}" />

我的顶级控制:
x:Name="root"
DataContext="{Binding AddNewClientViewModel, Source={StaticResource ServiceLocator}}"

让这个工作没有骰子......

最佳答案

您需要的是 DataContextProxy which was created by Dan Wahlin .问题是一旦你进入数据表单,你就有了一个新的数据上下文。没有简单的方法可以返回到 View 的数据上下文。数据上下文代理使您可以轻松地做到这一点,我已经使用了很多次,发现它工作得很好。

关于银光装订,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1695643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com