gpt4 book ai didi

c# - WPF ViewModel 和绑定(bind)

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

我正在设计一个 WPF 应用程序并具有以下 ViewModel:

  • ProjectViewModel(包含 GroupViewModels 的 ObservableCollection)
  • GroupViewModel(包含 ItemViewModels 的 ObservableCollection)
  • ItemViewModel

  • 我打算用 Window 来表示这个。包含多个 Tabs包含 Items .

    下面是它的外观:

    enter image description here

    在我的 MainWindow.xaml :
    <Window.DataContext>
    <viewModel:ProjectViewModel/>
    </Window.DataContext>

    我计划将 ViewModel 绑定(bind)到 View UIElements,如下所示:
  • ProjectViewModel ->(绑定(bind)到)窗口
  • GroupViewModel -> (绑定(bind)到) TabItem
  • ItemViewModel ->(绑定(bind)到)一些自定义控件,现在只是显示为彩色矩形

  • 这是我无法弄清楚的问题...

    选项卡需要是动态的(可以由用户添加/删除)。

    为了做到这一点,我遵循了 CodeProject.com 上的教程: Add/Remove Tabs Dynamically in WPF .

    在此代码中, TabControl.DataContext设置为 TabItems 列表,其中包含基于用户操作添加/删除的项目。

    但是,如果我将 TabControl.DataContext 绑定(bind)到 TabItems 列表,我会不会失去将其绑定(bind)到我的 GroupViewModel 的能力?

    有没有办法将它绑定(bind)到两者?

    遵循 MVVM 模式,UIElement 的 DataContext 不应该绑定(bind)到 ViewModel,而不是另一个 UIElement。

    有没有办法可以按照我的计划将我的 ViewModels 绑定(bind)到我的 View UIElements 并且仍然执行动态选项卡?

    非常感谢您的任何想法或建议。

    菲利普

    最佳答案

    不必将每个嵌套集合绑定(bind)到可视树的嵌套元素。 DataContext依赖属性通过该树继承。

    <Window.DataContext>
    <viewModel:ProjectViewModel/>
    </Window.DataContext>
    <TabControl
    ItemsSource="{Binding GroupViewModels}">
    ....

    关于c# - WPF ViewModel 和绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22122370/

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