C# 密钥提示在Microsoft Ribbon中不起作用

C# 密钥提示在Microsoft Ribbon中不起作用,c#,wpf,ribbon,C#,Wpf,Ribbon,使用RibbonControlsLibrary(3.5.41019.1)时,“钥匙头”工作不正常。我创建了一个简单的RibbonWindow: <ribbon:RibbonTab x:Name="HomeTab" Header="Home" KeyTip="H"> <ribbon:RibbonGroup x:Name="Group1"

使用RibbonControlsLibrary(3.5.41019.1)时,“钥匙头”工作不正常。我创建了一个简单的RibbonWindow:

        <ribbon:RibbonTab x:Name="HomeTab" 
                          Header="Home" KeyTip="H">
            <ribbon:RibbonGroup x:Name="Group1" 
                                Header="Group1">
                <ribbon:RibbonButton Label="Hej" KeyTip="T" />                    
            </ribbon:RibbonGroup>

        </ribbon:RibbonTab>

        <ribbon:RibbonTab Header="Tab1">
            <ribbon:RibbonGroup Header="Min grupp">
                <ribbon:RibbonButton Label="Test" />
                <ribbon:RibbonSplitButton Label="Testen">
                    <ribbon:RibbonMenuItem Header="Jaha" />
                </ribbon:RibbonSplitButton>
            </ribbon:RibbonGroup>
        </ribbon:RibbonTab>

        <ribbon:RibbonTab Header="Tab2" KeyTip="2" />
        <ribbon:RibbonTab Header="Tab3" KeyTip="3" />
</ribbon:Ribbon>
  • 添加几个选项卡
  • 添加一些控件,如按钮
  • 设置标签和标题等属性
  • 在选项卡上设置KeyTip属性
  • 我在desgin模式(VS2010)下测试了KeyTip,一切正常。但是,当我将项目构建为windows应用程序时,会出现以下情况:

            <ribbon:RibbonTab x:Name="HomeTab" 
                              Header="Home" KeyTip="H">
                <ribbon:RibbonGroup x:Name="Group1" 
                                    Header="Group1">
                    <ribbon:RibbonButton Label="Hej" KeyTip="T" />                    
                </ribbon:RibbonGroup>
    
            </ribbon:RibbonTab>
    
            <ribbon:RibbonTab Header="Tab1">
                <ribbon:RibbonGroup Header="Min grupp">
                    <ribbon:RibbonButton Label="Test" />
                    <ribbon:RibbonSplitButton Label="Testen">
                        <ribbon:RibbonMenuItem Header="Jaha" />
                    </ribbon:RibbonSplitButton>
                </ribbon:RibbonGroup>
            </ribbon:RibbonTab>
    
            <ribbon:RibbonTab Header="Tab2" KeyTip="2" />
            <ribbon:RibbonTab Header="Tab3" KeyTip="3" />
    </ribbon:Ribbon>
    
    • ALT+KeyTip仅显示按键提示,焦点不改变。预期的行为将是改变标签
    我试图创建一个干净的wpfribbon项目,并做了同样的事情,然后出于某种原因,它工作了。非工作项目是表单和WPF的混合体,表单显示在WPF窗口之前。这可能是问题所在吗?我明白为什么这会是个问题了

            <ribbon:RibbonTab x:Name="HomeTab" 
                              Header="Home" KeyTip="H">
                <ribbon:RibbonGroup x:Name="Group1" 
                                    Header="Group1">
                    <ribbon:RibbonButton Label="Hej" KeyTip="T" />                    
                </ribbon:RibbonGroup>
    
            </ribbon:RibbonTab>
    
            <ribbon:RibbonTab Header="Tab1">
                <ribbon:RibbonGroup Header="Min grupp">
                    <ribbon:RibbonButton Label="Test" />
                    <ribbon:RibbonSplitButton Label="Testen">
                        <ribbon:RibbonMenuItem Header="Jaha" />
                    </ribbon:RibbonSplitButton>
                </ribbon:RibbonGroup>
            </ribbon:RibbonTab>
    
            <ribbon:RibbonTab Header="Tab2" KeyTip="2" />
            <ribbon:RibbonTab Header="Tab3" KeyTip="3" />
    </ribbon:Ribbon>
    
    源代码:

            <ribbon:RibbonTab x:Name="HomeTab" 
                              Header="Home" KeyTip="H">
                <ribbon:RibbonGroup x:Name="Group1" 
                                    Header="Group1">
                    <ribbon:RibbonButton Label="Hej" KeyTip="T" />                    
                </ribbon:RibbonGroup>
    
            </ribbon:RibbonTab>
    
            <ribbon:RibbonTab Header="Tab1">
                <ribbon:RibbonGroup Header="Min grupp">
                    <ribbon:RibbonButton Label="Test" />
                    <ribbon:RibbonSplitButton Label="Testen">
                        <ribbon:RibbonMenuItem Header="Jaha" />
                    </ribbon:RibbonSplitButton>
                </ribbon:RibbonGroup>
            </ribbon:RibbonTab>
    
            <ribbon:RibbonTab Header="Tab2" KeyTip="2" />
            <ribbon:RibbonTab Header="Tab3" KeyTip="3" />
    </ribbon:Ribbon>
    

    在功能区控件中添加属性:KeyboardNavigation.ControlTabNavigation

            <ribbon:RibbonTab x:Name="HomeTab" 
                              Header="Home" KeyTip="H">
                <ribbon:RibbonGroup x:Name="Group1" 
                                    Header="Group1">
                    <ribbon:RibbonButton Label="Hej" KeyTip="T" />                    
                </ribbon:RibbonGroup>
    
            </ribbon:RibbonTab>
    
            <ribbon:RibbonTab Header="Tab1">
                <ribbon:RibbonGroup Header="Min grupp">
                    <ribbon:RibbonButton Label="Test" />
                    <ribbon:RibbonSplitButton Label="Testen">
                        <ribbon:RibbonMenuItem Header="Jaha" />
                    </ribbon:RibbonSplitButton>
                </ribbon:RibbonGroup>
            </ribbon:RibbonTab>
    
            <ribbon:RibbonTab Header="Tab2" KeyTip="2" />
            <ribbon:RibbonTab Header="Tab3" KeyTip="3" />
    </ribbon:Ribbon>
    
     <ribbon:Ribbon DockPanel.Dock="Top" SelectedIndex="1" KeyboardNavigation.ControlTabNavigation="Contained">
    
    
    

    它对我有效。

    在显示WPF窗口之前,我通过添加以下代码行成功解决了问题:

            <ribbon:RibbonTab x:Name="HomeTab" 
                              Header="Home" KeyTip="H">
                <ribbon:RibbonGroup x:Name="Group1" 
                                    Header="Group1">
                    <ribbon:RibbonButton Label="Hej" KeyTip="T" />                    
                </ribbon:RibbonGroup>
    
            </ribbon:RibbonTab>
    
            <ribbon:RibbonTab Header="Tab1">
                <ribbon:RibbonGroup Header="Min grupp">
                    <ribbon:RibbonButton Label="Test" />
                    <ribbon:RibbonSplitButton Label="Testen">
                        <ribbon:RibbonMenuItem Header="Jaha" />
                    </ribbon:RibbonSplitButton>
                </ribbon:RibbonGroup>
            </ribbon:RibbonTab>
    
            <ribbon:RibbonTab Header="Tab2" KeyTip="2" />
            <ribbon:RibbonTab Header="Tab3" KeyTip="3" />
    </ribbon:Ribbon>
    
    System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(this);
    
    如果在同一项目中混合使用WinForms和WPF窗口,则至少当WinForm显示在WPF窗口之前时,这是必需的

            <ribbon:RibbonTab x:Name="HomeTab" 
                              Header="Home" KeyTip="H">
                <ribbon:RibbonGroup x:Name="Group1" 
                                    Header="Group1">
                    <ribbon:RibbonButton Label="Hej" KeyTip="T" />                    
                </ribbon:RibbonGroup>
    
            </ribbon:RibbonTab>
    
            <ribbon:RibbonTab Header="Tab1">
                <ribbon:RibbonGroup Header="Min grupp">
                    <ribbon:RibbonButton Label="Test" />
                    <ribbon:RibbonSplitButton Label="Testen">
                        <ribbon:RibbonMenuItem Header="Jaha" />
                    </ribbon:RibbonSplitButton>
                </ribbon:RibbonGroup>
            </ribbon:RibbonTab>
    
            <ribbon:RibbonTab Header="Tab2" KeyTip="2" />
            <ribbon:RibbonTab Header="Tab3" KeyTip="3" />
    </ribbon:Ribbon>