代码之家  ›  专栏  ›  技术社区  ›  Rushui Guan

Fluent RibbonTabItem的WPF设计器扩展性

  •  1
  • Rushui Guan  · 技术社区  · 12 年前

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

    以下是视图的基类:

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

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

    这让我了解了WPF设计器扩展性API。我希望让设计师展示完整的Ribbon。但我很难理解,因为msdn中的样本都没有类似的场景。

    有人能给我一个提示吗?我该怎么做?

    谢谢

    1 回复  |  直到 12 年前
        1
  •  0
  •   Rushui Guan    12 年前

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

    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);
                    }
                }
            }
        }
    }
    
    推荐文章