Xaml 是否使用WPF关闭嵌套选项卡?

Xaml 是否使用WPF关闭嵌套选项卡?,xaml,mvvm,tabs,nested,Xaml,Mvvm,Tabs,Nested,我试图设计一个包含嵌套选项卡的UI,但似乎找不到有关如何以MVVM方式删除嵌套选项卡的信息 这是我的XAML(为简洁起见剪掉): 我的问题是:我应该传递什么参数CommandParameter,以及如何在ViewModel中影响它以正确删除选项卡?看起来您对如何在WPF中实现M-V-VM模式没有很好的理解。看起来您了解数据绑定,但您的示例演示的模式似乎缺少对ViewModels和命令的理解,而这是MVVM真正需要的 查看下面链接的文章及其使用的示例应用程序。您应该会发现,这里演示了您希望执行

我试图设计一个包含嵌套选项卡的UI,但似乎找不到有关如何以MVVM方式删除嵌套选项卡的信息

这是我的XAML(为简洁起见剪掉):



我的问题是:我应该传递什么参数CommandParameter,以及如何在ViewModel中影响它以正确删除选项卡?

看起来您对如何在WPF中实现M-V-VM模式没有很好的理解。看起来您了解数据绑定,但您的示例演示的模式似乎缺少对ViewModels和命令的理解,而这是MVVM真正需要的

查看下面链接的文章及其使用的示例应用程序。您应该会发现,这里演示了您希望执行的操作,并且非常容易实现


我希望这看起来不像是一种逃避,但这将需要大量的链接文章的重新发布,让你到你想去的地方。阅读这篇文章,仔细阅读示例,如果您仍然有问题,就发布这个问题,我一定会关注它。

看起来您对如何在WPF中实现M-V-VM模式没有很好的理解。看起来您了解数据绑定,但您的示例演示的模式似乎缺少对ViewModels和命令的理解,而这是MVVM真正需要的

查看下面链接的文章及其使用的示例应用程序。您应该会发现,这里演示了您希望执行的操作,并且非常容易实现


我希望这看起来不像是一种逃避,但这将需要大量的链接文章的重新发布,让你到你想去的地方。请阅读文章,仔细阅读示例,如果您仍然有问题,请发布此问题,我一定会留意。

谢谢您的回复!我承认,我对这一切都很陌生。我已经读过你链接的文章好几次了,但是对于一个对大多数概念都不熟悉的人来说,这有点吓人。我发现了这一个,它非常有助于将Josh Smith的工作翻译成外行的术语:。我认为最让我困惑的概念是视图将信息传达给ViewModel的正确方式。我一直在使用CommandParameter,但这似乎不是正确的应用程序。上面的文章似乎表明这是通过收听OnPropertyChanged完成的,但我似乎不知道如何在MVVM灯光下使用OnPropertyChanged。对不起,正如我所说,我对这整个过程完全不熟悉。很抱歉评论垃圾邮件。好的,我使用我提到的文章使代码正常工作,设置了一个事件处理程序、一个适当的命令绑定和一个变量来中继所选的选项卡索引。我现在的问题是:为嵌套选项卡设置此选项的正确方法是在每个工作区中都有一个事件处理程序(一个在ProjectTabs中,另一个在FileTabs中分别处理集合),还是在处理来自两组选项卡的调用的事件处理程序上有一个正确的方法?对不起,我有点迷路了。我解决您问题的方法是为每个选项卡设置一个ViewModel。然后,我会让每个选项卡,就像Josh的示例项目一样,都有一个连接到按钮的命令,您将让用户单击该按钮来关闭选项卡。在适当的ViewModel中,该命令将执行正确的操作。(例如,从集合中删除选项卡。)这样,您也不必传递一个参数来说明要关闭哪个选项卡。用户只需单击右边的按钮,该按钮就正确地连接到右边的ViewModel。我将尝试为您模拟一个快速示例。好的,基本上,我将创建我的项目工作区,然后在其中设置close tab命令并将其连接到工作区事件中,等等,然后创建我的文件工作区,并在其中设置文件的close tab命令?如果我想在没有大量重复代码的情况下实现这一点,我会设置一个从ViewModelBase派生的通用工作空间类,我会从中派生我的项目和文件工作空间?(当我说“close tab command”时,我真正的意思是从集合中删除元素的命令…)感谢您的回复!我承认,我对这一切都很陌生。我已经读过你链接的文章好几次了,但是对于一个对大多数概念都不熟悉的人来说,这有点吓人。我发现了这一个,它非常有助于将Josh Smith的工作翻译成外行的术语:。我认为最让我困惑的概念是视图将信息传达给ViewModel的正确方式。我一直在使用CommandParameter,但这似乎不是正确的应用程序。上面的文章似乎表明这是通过收听OnPropertyChanged完成的,但我似乎不知道如何在MVVM灯光下使用OnPropertyChanged。对不起,正如我所说,我对这整个过程完全不熟悉。很抱歉评论垃圾邮件。好的,我使用我提到的文章使代码正常工作,设置了一个事件处理程序、一个适当的命令绑定和一个变量来中继所选的选项卡索引。我现在的问题是:为嵌套选项卡设置此选项的正确方法是在每个工作区中都有一个事件处理程序(一个在ProjectTabs中,另一个在FileTabs中分别处理集合),还是在处理来自两组选项卡的调用的事件处理程序上有一个正确的方法?对不起,我有点迷路了。我解决您问题的方法是为每个选项卡设置一个ViewModel。然后,我会让每个选项卡,就像Josh的示例项目一样,都有一个连接到按钮的命令,您将让用户单击该按钮来关闭选项卡。在适当的ViewModel中,该命令将执行正确的操作。(例如,从集合中删除选项卡。)这样,您也不必传递一个参数来说明要关闭哪个选项卡。用户只需单击右键,然后
<TabControl Name="ProjectTabControl" DockPanel.Dock="Top" ItemsSource="{Binding ProjectTabs}" IsSynchronizedWithCurrentItem="True">
   <TabControl.ContentTemplate>
      <DataTemplate>
         <TabControl DockPanel.Dock="Top" ItemsSource="{Binding FileTabs}" Padding="1">
            <Button Command="{Binding CloseTabCommand}" CommandParameter="TabItem" />
         </TabControl>
      </DataTemplate>
   </TabControl.ContentTemplate>
</TabControl>