gpt4 book ai didi

wcf - 使用定位器管理全景页面中的多个 View - View 模型对

转载 作者:行者123 更新时间:2023-12-03 10:49:21 26 4
gpt4 key购买 nike

我是 Silverlight/MVVM 的新手。我尝试了一些 MVVM Light 的示例,它看起来很棒。

对于我的场景,我想为每个全景项目创建一个全景页面,显示我的用户控件,一个客户的项目列表。

我已经构建了 usercontrol(view)、viewmodel 和 WCF 服务模型,并且在单个全景项目中运行良好(仅使用第一个客户)。
另外,我使用 MIX10 演示中显示的 MVVM Light 的定位器,它使我能够为 Expression Blend 制作设计时数据。

我的 viewmodel 将收到一个客户 ID 参数,然后根据此 ID 与 WCF 交换数据。
客户名单也来自WCF。所以我实际上不能在 Locator 的静态构造函数中创建 View 模型。

如果 View 模型是通过调用Locator在运行时构建的,如何进行数据绑定(bind)?

我想到的唯一方法是在usercontrol的构造函数中创建viewmodel对象并使其成为datacontext。

有更好的解决方案吗?

最佳答案

如果要在 XAML 中保留相同的声明性模型,可以将 CurrentCustomerViewModel 属性放在定位器上,然后在导航到页面之前将属性设置为正确的 View 模型。

就个人而言,尽管对于这样的页面,我通常在定位器上放置一个 View 模型工厂方法(因此它可以缓存它们等)并从 OnNavigatedTo 方法调用它,就像这样。

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
string id = NavigationContext.QueryString["customerID"];
vm = ViewModelLocator.GetCustomerViewModel(id);
DataContext = vm;
base.OnNavigatedTo(e);
}

然后我只使用 Blend 的示例数据功能来处理设计时数据。这种方式还有助于支持将页面固定到开始屏幕,因为这将是应用程序的入口点,而且我不一定有机会设置“CurrentCustomerVM”属性。

关于wcf - 使用定位器管理全景页面中的多个 View - View 模型对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11061665/

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