【问题标题】:How I can dynamically create new TabItems with views and viewModels for a TabControl in Silverlight with the MVVM Light Toolkit?如何使用 MVVM Light Toolkit 在 Silverlight 中为 TabControl 动态创建具有视图和 viewModel 的新 TabItem?
【发布时间】:2010-09-01 11:35:33
【问题描述】:

我是 Silverlight 和 MVVM Light Toolkit 的初学者,我不知道如何正确解决以下场景:

我有以下视图及其对应的视图模型:

  • MainView,默认起始页
  • TabControlView,带有单个 Tabcontrol 的视图,放置在 MainView...
  • AllBugsGridView,包含所有错误的数据网格。
  • BugDetailView,查看单个错误详细信息的显示位置,或者可以添加新错误..(数据字段、标签等)

现在我的目标如下:
我想要一个以 AllBugsGridView 作为内容的 tabitem。 (没问题) 现在,当用户双击数据网格中的一个项目时,它应该创建一个新的 tabItem,其中包含一个 bugDetailView,其中显示了网格项目的详细信息。应该可以有尽可能多的打开的 tabitems 用户想要的。

此外,用户还可以在按钮上添加新错误,并打开一个带有空错误详细信息视图的新选项卡。

有没有人为此提供适当的解决方案。我不知道如何动态创建新的视图和视图模型并将它们连接在一起。

非常感谢您的回答。

最好的问候

汉斯

【问题讨论】:

    标签: .net silverlight mvvm-light


    【解决方案1】:

    在此处查看我的示例项目。虽然它不使用 MVVM Light,但可以轻松修改以使用它。主要思想是将选项卡定义为“区域”,并且您有一个了解如何使用选项卡控件的区域管理器。然后,您只需将视图路由到该区域并让它处理其余的事情。

    http://csharperimage.jeremylikness.com/2010/06/advanced-silverlight-applications-using.html

    【讨论】:

      【解决方案2】:

      如果您将 TabControls 源绑定到 ViewModelBase 的 ObservableCollection 类型的视图模型的属性,您可以将新的 ViewModel 添加到您的集合或根据需要删除。这使 ViewModel 只能看到自己而不是视图。对于视图方面,除了将源绑定到集合之外,您还将视图和视图模型设置为数据模板和装饰器对...

      <Window.Resources>
          <DataTemplate DataType="{x:Type VM:ChangePasswordVM}">
              <AdornerDecorator>
                  <localUserControls:ChangePasswordView />
              </AdornerDecorator>
          </DataTemplate>
      </Window.Resources>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-19
        相关资源
        最近更新 更多