MVVM将RibbonTabs移动到单独的视图模型中

时间:2016-07-30 13:13:50

标签: c# wpf mvvm caliburn.micro ribbon

我使用Windows Ribbon与WPF一起使用Caliburn Micro。是否可以使用ViewModels将RibbonTabs移动到不同的视图中,以便视图更具可读性?

我的MainToolbarViewModel类绑定了MainToolbarView

MainToolbarViewModel

    public TabViewModel Tab { get; set; }

    public MainToolbarViewModel()
    {
        this.Tab = new TabViewModel();
    }

MainToolbarView

    <ribbon:Ribbon HorizontalAlignment="Stretch" VerticalAlignment="Top" SelectedIndex="0">
        <Ribbon.HelpPaneContent>
            <RibbonButton SmallImageSource="../Resources/WindowsIcons/help.png"></RibbonButton>
        </Ribbon.HelpPaneContent>

        <ContentControl x:Name="Tab"></ContentControl>

    </ribbon:Ribbon>

我希望ContentControl能够作为RibbonTab使用。这种方法适用于标准控件,但使用功能区时,它根本无法显示任何内容。

TabViewModel

    public class TabViewModel : Screen
    {
        public TabViewModel()
        {
            DisplayName = "New Tab";
        }
    }

TabView的

<UserControl ......>
    <RibbonTab IsSelected="True" Header="{Binding DisplayName}">
        <RibbonGroup Header="Types">
            <RibbonButton Content="Test"></RibbonButton>
        </RibbonGroup>
    </RibbonTab>
</UserControl>

我读到了为RibbonTab,RibbonGroup,RibbonButton制作ViewModel,但这看起来很疯狂,因为我需要为每个控件创建ViewModel。

此外,我读到的大多数答案都至少有1年的历史。有什么改变了吗?将RibbonTabs移动到其他视图模型的最简单方法是什么?

更新

<ContentControl x:Name="Tab"></ContentControl>

在其标题内显示RibbonTab的内容,所以基本上我有RibbonGroupRibbonTab标题内。 我认为这是因为Ribbon<ContentControl>视为某种标题而不是RibbonTab

0 个答案:

没有答案