如何在功能区中为WPF混合仅文本的RibbonToggleButton和仅图像的RibbonButton?

时间:2013-07-14 02:51:20

标签: wpf ribbon togglebutton

我正在使用Microsoft Ribbon for WPF October 2010并且在RibbonControlGroup内有3个按钮彼此相邻。左边和右边的控件是纯文本RibbonToggleButton控件,中间的控件是仅图像RibbonButton。按钮具有定义的宽度以匹配上面的行。

我的代码:

<r:RibbonControlGroup>
  <r:RibbonToggleButton Width="110" Label="Outgoing" IsChecked="True" />
  <!-- Padding and Height set to align the buttons/image -->
  <r:RibbonButton Width="30" Padding="5 0" Height="24" SmallImageSource="Images\Small\arrow_swap.png" />
  <r:RibbonToggleButton Width="110" Label="Incoming" />
</r:RibbonControlGroup>

问题是,只要我将SmallImageSource应用到中间按钮,其他两个就会获得图像的间距,导致文本不再居中。这是问题(1)。

由于我没有找到快速解决方案,我尝试不是通过SmallImageSource添加中间按钮的图像,而是将其添加为<Image>按钮的内容。但是,按钮将保持为空。这是问题(2)。

我的第三个解决方案是将图像添加到左侧和右侧按钮。不幸的是,图像和文本之间几乎没有边距,看起来很难看。我尝试了几项扩展边距,例如向<Style TargetType="Image">添加<RibbonToggleButton.Resources>,但是虽然编辑器接受它并在设计时显示间距,但边距再次消失运行。这是问题(3)。

是否有人对这三个问题中的任何一个都有适当的解决方案?我无法让它发挥作用。问题的数量也是替代方案的偏好,(1)最适合与合适的黑客一起使用。

1 个答案:

答案 0 :(得分:1)

看来你不能这样做。它的设计。

根据MSDN(here大约一半的页面):

  

相关功能区控件可以在RibbonControlGroup中组合在一起。调整控件组的大小时,会将一个RibbonControlSizeDefinition应用于RibbonControlGroup中的所有控件。 RibbonControlGroup位于RibbonGroup中,就像它是一个控件一样。

RibbonControlGroup中的所有控件共享相同的RibbonControlSizeDefinition。因此,在您的情况下,将为所有按钮添加图像。

如果您不想非常密切地粘贴所有控件,则可以使用RibbonGroup。这样,您可以使用不同的RibbonControlSizeDefinitions自定义每个按钮容器。