当前位置:  开发笔记 > 编程语言 > 正文

通过代码向WPF功能区添加新项目

如何解决《通过代码向WPF功能区添加新项目》经验,为你挑选了1个好方法。

我正在使用WPF Office功能区,我有一个内容视图,我希望在该视图变为活动状态时向功能区添加新项目.我有一些代码,它将一个新的RibbonCommand以及一个新的RibbonButton添加到我想要的组中,但是当我添加它时没有任何反应.但是,如果我使用按钮添加一个新组,它会很好并且绑定正确.是否有一些方法可以让它更新我错过了?我尝试过UpdateLayout(),它也不起作用.我真的很想尝试避免每次视图更改时重建所有组.

作品:

public void InjectItems(IView view)
{
var ribbonCommands = ProcessRibbonCommands(view.GetViewModel().Tasks, view.GetType());
var group = new RibbonGroup();
group.Command = new RibbonCommand() { LabelTitle = "Group Test" };            

foreach (RibbonCommand command in ribbonCommands)
{
    shell.MainRibbon.Resources.Add(command.Name, command);
    group.Controls.Add(new RibbonButton { Command = command });
}

shell.MainRibbon.SelectedTab.Groups.Add(group);
}

不起作用:

public void InjectItems(IView view)
{
var ribbonCommands = ProcessRibbonCommands(view.GetViewModel().Tasks, view.GetType());
var group = shell.MainRibbon.SelectedTab.Groups[0]; //I have a default group, will fix later

foreach (RibbonCommand command in ribbonCommands)
{
    shell.MainRibbon.Resources.Add(command.Name, command);
    group.Controls.Add(new RibbonButton { Command = command });
}
}

Alastair Pit.. 9

我假设您正在使用OfficeUI站点中的Microsoft Ribbon CTP.

作为许可协议的一部分,您可以遵循许多样式指南.其中之一是您不会根据当前视图添加/删除功能区的内容.

来自文档:

组中显示的控件不得因选择而改变.如果控件未激活,则控件必须显示为灰色,而不是从组中删除.这提供了更可预测的体验,并防止功能区上的控件布局更改和分散用户的注意力.

话虽如此,听起来像一个上下文选项卡正是你正在寻找的.这些可以被禁用和启用,但选项卡的实际内容不会更改.

这是在XAML中创建上下文选项卡的代码:


        
            
            
                
                    
                        
                        
                        
                    
                
            
        

然后,您可以通过以下代码激活和取消激活选项卡:

        if (!this.grpPieceContext.IsActive)
        {
            this.grpPieceContext.IsActive = true;
            this.grpPieceContext.Color = Colors.Orange;
        }

其中orange是位于上下文组后面的颜色.

希望这可以帮助



1> Alastair Pit..:

我假设您正在使用OfficeUI站点中的Microsoft Ribbon CTP.

作为许可协议的一部分,您可以遵循许多样式指南.其中之一是您不会根据当前视图添加/删除功能区的内容.

来自文档:

组中显示的控件不得因选择而改变.如果控件未激活,则控件必须显示为灰色,而不是从组中删除.这提供了更可预测的体验,并防止功能区上的控件布局更改和分散用户的注意力.

话虽如此,听起来像一个上下文选项卡正是你正在寻找的.这些可以被禁用和启用,但选项卡的实际内容不会更改.

这是在XAML中创建上下文选项卡的代码:


        
            
            
                
                    
                        
                        
                        
                    
                
            
        

然后,您可以通过以下代码激活和取消激活选项卡:

        if (!this.grpPieceContext.IsActive)
        {
            this.grpPieceContext.IsActive = true;
            this.grpPieceContext.Color = Colors.Orange;
        }

其中orange是位于上下文组后面的颜色.

希望这可以帮助

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有