【问题标题】:WPF RibbonWindow Minimize, Maximize / Restore, and Close Buttons Not VisibleWPF RibbonWindow 最小化、最大化/恢复和关闭按钮不可见
【发布时间】:2019-08-27 19:59:00
【问题描述】:

所以我整天都在谷歌上搜索,试图找到答案,但结果很短。我发现东西很接近,甚至可能找到了解决方案,只是没有意识到,但我似乎无法在我的 Windows 10 机器上显示(可见)最小化、最大化/恢复和关闭按钮。除了我自己和另一位刚拿到新笔记本电脑的开发人员之外,没有人会遇到这个问题。我试过改变我的windows主题,我确实让它们出现了,我打开了一些高对比度设置,但没有运气。尽管不可见,但它们仍然存在且功能正常,因为我可以单击该区域并查看窗口最小值、最大值、恢复、关闭。

我们正在使用 .Net 4.0 和带有自定义主题 (BureauBlue.xaml) 的 RibbonWindow。我想相信它可能与此有关,但我不知道任何关于它或从哪里开始不幸。

<r:RibbonWindow x:Class="Ztools.Main" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
                xmlns:props="clr-namespace:Ztools.Properties" 
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:r="clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary" 
                IsTabStop="False" Icon="/Ztools;component/ztools32.ico" Height="830" Width="1200"                         WindowStartupLocation="CenterScreen" WindowState="Normal" 
                Loaded="RibbonWindow_Loaded" Closing="RibbonWindow_Closing"
                xmlns:my="clr-namespace:System;assembly=mscorlib" Title="Ztools 2.0" Name="mainRibbon"                   FontSize="14" SizeChanged="mainRibbon_SizeChanged"                                                       LocationChanged="mainRibbon_LocationChanged" 
                StateChanged="mainRibbon_StateChanged" Deactivated="mainRibbon_Deactivated"                               KeyUp="mainRibbon_KeyUp" Background="{x:Null}">
      <r:RibbonWindow.Resources>
          <ResourceDictionary>
              <ResourceDictionary.MergedDictionaries>
                  <ResourceDictionary Source="/Ztools;component/themes/bureaublue.xaml"/>
              </ResourceDictionary.MergedDictionaries>
          </ResourceDictionary>
      </r:RibbonWindow.Resources>
</r:RibbonWindow>

另一件我注意到但还没有通过拿出我的旧笔记本电脑来验证的事情是,我很确定漂亮的按钮在设计时也出现了,而且看起来不像这样。

额外的问题/问题有时是当我们的计算机进入睡眠/休眠状态时,从扩展坞转到无工作站(不确定是哪一个或两者),主题栏也会像这样随机黑屏。如果我能同时解决这个问题,那就太好了。

我确实将其更改为普通窗口,并且能够正确查看所有按钮,但我想我宁愿不走那条路,知道问题是什么并解决它。

非常感谢任何想法或建议。

编辑:所以我认为这与主题无关?我注释掉了与主题有关的所有内容,但它们仍然没有出现......不知道为什么我很久以前没有采取这个简单的步骤。

【问题讨论】:

  • 你能分享一个重现问题的项目的工作版本吗?也许在 github 或类似网站上?
  • @Isma 不幸的是,我不能。如果其他人无法复制它,我完全明白。上面的代码大部分应该创建它。唯一遗漏的部分是如果需要的话,只需在其中扔一条随机丝带。就像我说的那样,它实际上很奇怪,我只在我们的两台机器上看到它,但很难说其他用户是否也会开始看到它。
  • 好吧,您至少应该尝试提供minimal, reproducible example,否则您可能只会得到非常笼统和模糊的答案,因为您提供的信息很难解决您的问题。

标签: c# wpf xaml themes ribboncontrolslibrary


【解决方案1】:

因此要再次发布此内容,这样任何有相同或类似问题的人至少可以选择解决他们的问题......因为出于某种原因,尽管包含有价值的信息作为问题的替代解决方案,但由于某种原因它被删除了。

现在,我将它从 RibbonWindow 更改为 Window,并给我的 Ribbon 设置了 0,-22,0,0 的边距,因此正如许多其他 SO 帖子所建议的那样,一切都排列整齐并且看起来不错。按钮现在显示了,但不是 RibbonWindow 样式,所以它是什么。

<Window x:Class="Ztools.Main" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
                xmlns:props="clr-namespace:Ztools.Properties" 
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:r="clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary" 
                IsTabStop="False" Icon="/Ztools;component/ztools32.ico" Height="830" Width="1200" WindowStartupLocation="CenterScreen" WindowState="Normal" 
                Loaded="RibbonWindow_Loaded" Closing="RibbonWindow_Closing"
                xmlns:my="clr-namespace:System;assembly=mscorlib" Title="Ztools 2.0" Name="mainRibbon" FontSize="14" SizeChanged="mainRibbon_SizeChanged" LocationChanged="mainRibbon_LocationChanged" StateChanged="mainRibbon_StateChanged" Deactivated="mainRibbon_Deactivated" KeyUp="mainRibbon_KeyUp">

   <r:Ribbon Title="Ztools 2.0 (Scale Configuration Editor)" IsTabStop="False" Background="#FFE5E5E5" FontSize="12" FontFamily="Arial" Margin="0,-22,0,0">
   </r:Ribbon>
</Window>

【讨论】:

    【解决方案2】:

    The ribbonwindow in version 5 has set WindowStyle="none" by default.
    也许WindowStyle 只是设置为无?
    尝试将其设置为“SingleBorderWindow”它在基类中的原始默认值。

    【讨论】:

    • 你让我抱有希望,但那并没有做到:(
    • 该死的!值得一试
    【解决方案3】:

    我不仅遇到了同样的问题,而且能够在一个新项目中复制它并通过这个解决方案修复它,尽管对你来说它需要迁移到更新的 .net 版本。

    问题似乎源于使用 RibbonControlsLibrary。它是功能区控件的过时版本。从 .net 4.5 开始,Ribbon 是框架的原生功能,通过删除引用,您将能够使用包含的 RibbonWindow。

    移至 .net 4.5+ 版本并删除此引用

    xmlns:r="clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary" 
    

    并使用

    <RibbonWindow> 
    

    而不是

    <r:RibbonWindow>
    

    【讨论】:

      猜你喜欢
      • 2016-03-04
      • 2011-03-13
      • 2016-10-04
      • 2017-01-07
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多