gpt4 book ai didi

wpf - 一个 ViewModel,多个 View

转载 作者:行者123 更新时间:2023-12-03 01:48:47 25 4
gpt4 key购买 nike

我很难让多个 View 针对 1 个 View 模型工作。我已阅读Naming Convention for Multi-View Support并没有从中得到太多,并且在这个过程中尝试了无数的事情。

举个简单的例子。假设我有一个位于 ShellViewModel 中的 People ViewModel,它基本上包含一个 Person 对象列表。我想在我的应用程序中以两种不同的方式显示它们。

enter image description here

在这种情况下命名 View 的正确方法是什么,以及如何在 ShellView 中显示这两个 View ?

最佳答案

Anders 是正确的,Caliburn.Micro 有许多默认约定。 ,其中之一将找到并显示 <RootNS>.Views.[<ChildNS>].<ViewTypeName>对于 <RootNS>.ViewModels.[<ChildNS>].<ViewModelTypeName> .

就您而言,对于单个 View (假设类驻留在从文件夹派生的命名空间中):

<RootNS>.Views.PeopleView将找到并显示 <RootNS>.ViewModels.PeopleViewModel .

对于同一 View 模型上的多个 View ,约定是格式为 <EntityName>.<Context> 的 View 显示格式为 <EntityName>[<ViewSuffix>]ViewModel 的 View 模型:

根据您的示例,您可以创建一个名为 People 的新文件夹。 ,并在其中创建名为 Grid 的 View 和List .

您的命名空间变为 <RootNS>.Views.People.Grid<RootNS>.Views.People.List然后,应该找到并显示 <RootNS>.ViewModels.PeopleViewModel .

然后您通常会显示 Views类似于 ContentControl ,选择View您想通过设置cal:View.Context来显示属性(property)。如果该特定控件中的上下文不会更改,您可以对名称进行硬编码,或者绑定(bind)到描述 ViewModel 状态的属性。应显示为。

例如

<ContentControl cal:View.Model="{Binding Path=ActiveItem}" 
cal:View.Context="List" />

请参阅Multiple Views over the Same ViewModel部分。

关于wpf - 一个 ViewModel,多个 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18788671/

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