gpt4 book ai didi

silverlight - 在 Silverlight 和 MVVM 中动态添加 View

转载 作者:行者123 更新时间:2023-12-02 04:15:57 26 4
gpt4 key购买 nike

我开始用 MVVM 模式重写我的整个 silverlight 业务应用程序;
我的第一站是这样的:

我有一个带有相应 ViewModel1 的页面(View1)(带有属性'IEnumerable AllData');

现在,在这个 View 中,我想要一个 TreeView 控件,其中一个节点将填充另一个 View2;

我的问题是:
1. 怎么做?
- 我无法遍历 AllData 属性,因为它是异步加载的......
- 因此我不知道要插入的 View2s 的数量
- 我不知道如何从 ViewModel1 做到这一点 :(

  • 我需要带有属性“MyDataEntity CurrentData”的 ViewModel2 吗?
  • 或者我可以从 ViewModel1
  • 绑定(bind)到 AllData 属性

    你能帮我吗?

    谢谢

    最佳答案

    听起来您正在尝试将主/详细 View 放在一起?其中 MasterView 包含所有 DetailView 的 TreeView。

    所以 ViewModels 看起来像

    public class DataListViewModel
    {
    public DataDetailViewModel[] AllData {get;}
    }

    public class DataDetailViewModel
    {
    public Data Model {get;}
    public DataListViewModel Parent {get;}
    }

    如果这或多或少是准确的,那么您将有一条非常简单的道路,您需要做的是首先选择 View 或 ViewModel。

    使用 View 第一选择,您可以将 DataTemplate 用于将控制 TreeViews 项的 TreeView。
    <DataTemplate x:Key="dataTemplate">
    <my:DataDetailView DataContext="{Binding Path=.}" />
    </DataTemplate>

    只要确保你的 View 有一个默认的构造函数。

    对于 ViewModel 的首选,您需要使用一个 TemplateSelector,它会根据设置的对象拉出正确的 View。这可能是最灵活的,因为您可以基于 Detail 类使用不同的 View 。

    查看链接了解更多信息 http://www.switchonthecode.com/tutorials/wpf-tutorial-how-to-use-a-datatemplateselector

    关于silverlight - 在 Silverlight 和 MVVM 中动态添加 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2819860/

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