【问题标题】:How to start using Ribbons in WPF如何开始在 WPF 中使用功能区
【发布时间】:2021-03-03 22:53:29
【问题描述】:

我尝试引用System.Windows.Controls.Ribbon,工具箱选项卡未显示。如果我右键单击一个选项卡并单击全部显示,该选项卡就在那里,但控件没有亮起。我可以手动添加一个选项卡和相关控件,但是在添加功能区之后,quickaccesstoolbarmenuitem 之类的东西无法正常工作 - 由于某种原因它们被视为选项卡。对照组也不行。 根本没有按应有的方式工作。

我尝试过直接编辑 XAML。它以与使用设计器相同的方式失败。

对于付费控制套件,在线教程要么已经过时,要么根本不起作用。

我不想使用像 http://www.codeproject.com/Articles/364272/Easily-Add-a-Ribbon-into-a-WinForms-Application-Cs 这样的标记解决方案,我想要在设计师中工作的东西——这要求太多了吗?如果是这样,我很乐意回到 winforms。

如果您使用丝带,您是如何做到的?这个问题看起来很简单,但挖了几个小时还是没有答案。

我是一名独立开发人员,制作开源免费软件。作为一名学生,我真的买不起 1000 美元的控制套件。我用的是VS2013社区,我试过用2015代替,但是上面的问题都是一样的。

【问题讨论】:

  • 顺便问一下,问题是这些控件在设计器中不起作用,还是根本不起作用? (不是 MS 开发人员,所以帮不上忙,但可能值得澄清)。
  • 您正在阅读一个链接,该链接告诉您如何在 WINFORM 上实现控件,但您的标题另有说明。你能确认你想要使用哪种 GUI。对不起,我也有点认为 VS 的版本应该不是问题。如果您谈论的是不同的 .NET 版本,我会研究更多,但 VS 版本不应该是问题的一部分。值得一提的是,我敢打赌,大部分 WPF 开发人员从不依赖设计视图。我们只是直接输入糟糕的 xmal 代码。
  • @cscmh99 我想要一个适用于 WPF 设计器的解决方案。我可以并且已经完成了没有设计师的界面,但我认为这应该是所有其他人都失败的时候。 Designer 还可以减少您需要生成的代码量,从而在工作时提高生产力并减少错误(笑)。实际上,我确实尝试过 XAML 编辑、复制代码,但它并不能完全按照设计器不起作用的方式工作。
  • 但我现在将这些信息添加到问题中。

标签: wpf ribbon


【解决方案1】:

添加此参考:

XAML 文件中的这个命名空间:

并尝试使用此代码示例:

 <DockPanel>
    <Ribbon DockPanel.Dock="Top" Margin="0,-22,0,0">  
        <Ribbon.ApplicationMenu>
            <RibbonApplicationMenu SmallImageSource="Images/list.png">
                <RibbonApplicationMenu.AuxiliaryPaneContent>
                    <RibbonGallery ScrollViewer.VerticalScrollBarVisibility="Auto">
                        <RibbonGalleryCategory MaxColumnCount="1">
                            <RibbonGalleryItem
                            x:Name="GalleryItem1" Content="Application menu content" 
                            MouseOverBackground="Transparent"
                            MouseOverBorderBrush="Transparent"
                            CheckedBackground="Transparent"
                            CheckedBorderBrush="Transparent"
                            />
                            <RibbonGalleryItem>
                                <Hyperlink x:Name="hl1" Click="hl1_Click">
                                    <Run Text="http://www.bing.com"/>
                                </Hyperlink>
                            </RibbonGalleryItem>
                        </RibbonGalleryCategory>
                    </RibbonGallery>
                </RibbonApplicationMenu.AuxiliaryPaneContent>
                <RibbonApplicationMenuItem x:Name="menuItem1" Header="Add"
                    ImageSource="Images/add.png"/>
                <RibbonApplicationMenuItem x:Name="menuItem2" Header="Settings"
                    ImageSource="Images/system_preferences.png"/>
            <RibbonApplicationMenu>
        </Ribbon.ApplicationMenu>
        <RibbonTab x:Name="rbnTab1" Header="Tab1">
            <RibbonGroup x:Name="rbnGr1" Header="General">
                <RibbonButton x:Name="btnRibbon1" Label="Save"
                    LargeImageSource="Images/filesave.png"/>
                <RibbonButton x:Name="btnRibbon2" Label="Open"
                    LargeImageSource="Images/load.png"/>
            </RibbonGroup>
            <RibbonGroup x:Name="rbnGr2" Header="New group">
                <RibbonButton x:Name="btnRibbon3" Label="Font"
                    LargeImageSource="Images/fonts.png"/>
                <RibbonButton x:Name="btnRibbon4" Label="Delete"
                    LargeImageSource="Images/recycle_bin.png"/>
            </RibbonGroup>
        </RibbonTab>
        <RibbonTab x:Name="rbnTab2" Header="Tab2">
            <RibbonGroup x:Name="rbnGr3" Header="Other Group">
                <RibbonButton x:Name="btnRibbon5" Label="Play"
                    LargeImageSource="Images/play.png"/>
                <RibbonButton x:Name="btnRibbon6" Label="List"
                    LargeImageSource="Images/kmenuedit.png"/>
            </RibbonGroup>
            <RibbonGroup x:Name="rbnGr4" Header="What a group">
                <RibbonButton x:Name="btnRibbon7" Label="Sleep"
                    LargeImageSource="Images/icon_sleep.png"/>
                <RibbonButton x:Name="btnRibbon8" Label="Add"
                    LargeImageSource="Images/add.png"/>
            </RibbonGroup>
        </RibbonTab>
    </Ribbon>

    <Grid>
        <!-- add your content here-->

    </Grid>
</DockPanel>

如果你不喜欢&lt;Ribbon.ApplicationMenu&gt;,你可以通过添加这个属性Visibility="Collapsed"来删除它

<Ribbon.ApplicationMenu>
    <RibbonApplicationMenu Visibility="Collapsed">
    </RibbonApplicationMenu>
</Ribbon.ApplicationMenu>

【讨论】:

  • 我添加了引用并粘贴了代码,但没有添加 XAML 引用。没有它似乎可以工作。
【解决方案2】:

请看以下内容。您应该能够对 Ribbon 有一个非常基本的了解。

http://blogs.msdn.com/b/wpf/archive/2010/08/03/introducing-microsoft-ribbon-for-wpf.aspx

示例项目下载

如果要运行项目,需要将项目的 .NET Framework 版本更改为 4.0 或以上。

向项目添加 System.Window.Controls.Ribbon 引用

删除 System.Window.Shell 和 RibbonControlLibrary 等引用

修复 xmal 中的所有命名空间和代码隐藏 .cs 后,示例应该能够运行

http://blogs.msdn.com/b/wpf/archive/2010/08/03/building-a-simple-ribbon-application-in-wpf.aspx

Microsoft Ribbon for WPF(获取带有示例的功能以获得更全面的示例) http://www.microsoft.com/en-us/download/details.aspx?id=11877

【讨论】:

  • 这是一个过时的黑客。我真的想要为设计师增加一些东西,一个原生的解决方案,应该有所有的支持。如果我要在没有帮助的情况下使用代码编写整个功能区,还不如重新发明功能区。此外,如果我在工具箱中“显示全部”,我会看到功能区选项卡。我看到有旧教程,它与设计师完美配合。从 3.5 升级后,为什么会变得更糟?对于丝带等基本的东西,它只是感觉不适合。
  • 我不知道你在追求什么。 Ribbon 是由 Mircosoft 提供的独立控件,是 .NET Framework 4.5 的一部分。 msdn.microsoft.com/en-us/library/ff799534(v=vs.110).aspx。所以,我不确定你对旧/新黑客的意思。我知道我不是 wpf 的终极专家,但我告诉过你,在开发 WPF 应用程序时你不应该依赖设计器。让我这样说吧。 Mircosoft 提出了另一个名为 Blend 的工具来处理“设计师视图”大声喊叫,但它在大多数 WPF 项目中仍然无法正常工作
  • 赞成提供帮助,但 MS 网站上的资源不是比 2010 年更新吗?这似乎很旧。
  • 我觉得我不得不重复很多次。它曾经工作过!我看到它正在与设计师合作的视频!为什么我不能得到一些呢?
猜你喜欢
  • 1970-01-01
  • 2023-04-03
  • 2011-01-19
  • 1970-01-01
  • 2011-03-27
  • 1970-01-01
  • 1970-01-01
  • 2013-08-08
  • 1970-01-01
相关资源
最近更新 更多