Fluent RibbonTabItem的WPF Designer可扩展性

时间:2014-04-04 21:01:58

标签: c# wpf xaml designer

我在Fluent Ribbon中使用了WPF Composite App。我的视图包含功能区选项卡。在shell中创建视图时,它将插入到主Ribbon对象中。

以下是视图的基类:

public class WorkspaceView : UserControl {
    public Fluent.RibbonTabItem RibbonTabItem { get; set; }
}

然后,开发人员可以在创建视图时在XAML文件中声明RibbonTabItem。它工作正常,但开发人员实际上看不到设计器中的选项卡,这使得这是一项繁琐的任务。

这引导我进入WPF Designer Extensibility API。我希望装配设计师能够显示完整的功能区。但我正在摸不着头脑,因为来自msdn的样本都没有类似的情况。

有人可以给我一个提示,我该如何处理?

由于

1 个答案:

答案 0 :(得分:0)

我通过直接在UserControl类中操作设计时的布局来避免扩展设计器。该解决方案似乎在2012年和2013年的visual studio中正常运行。

public class WorkspaceView : UserControl {
    public RibbonTabItem RibbonTabItem { get; set; }

    protected override void OnInitialized(EventArgs e) {
        base.OnInitialized(e);

        if (DesignerProperties.GetIsInDesignMode(this)) {
            if (RibbonTabItem != null) {
                UIElement content = this.Content as UIElement;
                DockPanel panel = new DockPanel();
                Content = panel;
                Ribbon ribbon = new Ribbon();
                ribbon.Tabs.Add(RibbonTabItem);
                DockPanel.SetDock(ribbon, Dock.Top);

                panel.Children.Add(ribbon);
                if (content != null) {
                    panel.Children.Add(content);
                    DockPanel.SetDock(content, Dock.Bottom);
                }
            }
        }
    }
}