Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF视图模型和绑定_C#_Wpf_Xaml_Mvvm - Fatal编程技术网

C# WPF视图模型和绑定

C# WPF视图模型和绑定,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,我正在设计一个WPF应用程序,具有以下ViewModels: ProjectViewModel(包含GroupViewModels的ObservableCollection) GroupViewModel(包含ItemViewModels的ObservableCollection) ItemViewModel 我计划用一个窗口来表示这一点,该窗口包含多个选项卡,其中包含项 下面是它的外观: 在我的main窗口中.xaml: <Window.DataContext> &l

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

  • ProjectViewModel(包含GroupViewModels的ObservableCollection)
  • GroupViewModel(包含ItemViewModels的ObservableCollection)
  • ItemViewModel
我计划用一个
窗口
来表示这一点,该窗口包含多个
选项卡
,其中包含

下面是它的外观:

在我的
main窗口中.xaml

<Window.DataContext>
    <viewModel:ProjectViewModel/>
</Window.DataContext>

我计划绑定ViewModel以查看UIElements,如下所示:

  • ProjectViewModel->(绑定到)窗口
  • GroupViewModel->(绑定到)选项卡项
  • ItemViewModel->(绑定到)一些自定义控件,目前仅显示为彩色矩形
这是我无法解决的问题…

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

为了完成这一点,我遵循了CodeProject.com上的教程:

在这段代码中,
TabControl.DataContext
被设置为一个TabItems列表,该列表根据用户操作添加/删除了项

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

有没有办法将两者结合起来

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

有没有一种方法可以像我计划的那样将ViewModels绑定到我的视图元素,并且仍然执行动态选项卡

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


Philip

无需将每个嵌套集合绑定到可视化树的嵌套元素。
DataContext
依赖项属性通过该树继承

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

....

无需将每个嵌套集合绑定到可视化树的嵌套元素。
DataContext
依赖项属性通过该树继承

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

....

无需将每个嵌套集合绑定到可视化树的嵌套元素。
DataContext
依赖项属性通过该树继承

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

....

无需将每个嵌套集合绑定到可视化树的嵌套元素。
DataContext
依赖项属性通过该树继承

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

....

为了使用此代码,我是否需要将我的
GroupViewModel
扩展
System.Windows.Controls.TabItem
TabControl
的项不需要是
TabItem
?为了使用此代码,我是否需要使我的
GroupViewModel
扩展
System.Windows.Controls.TabItem
TabControl
的项不需要是
TabItem
?为了使用此代码,我是否需要使我的
GroupViewModel
扩展
System.Windows.Controls.TabItem
TabControl
的项不需要是
TabItem
?为了使用此代码,我是否需要使我的
GroupViewModel
扩展
System.Windows.Controls.TabItem
TabControl
的项不需要是
TabItem