【问题标题】:Giving a stackPanel the same LinearGradientBrush as the toolbar has by default默认情况下,为 stackPanel 提供与工具栏相同的 LinearGradientBrush
【发布时间】:2011-04-06 15:40:49
【问题描述】:

我有两个并排的ToolBars(我必须这样做,以便我可以左右对齐按钮) 但是现在,我必须添加一些可以在两个工具栏之间左右对齐或居中对齐的文本。我在StackPanel 内的StackPanel 中添加了文本,该文本位于第二个位置(工具栏之间)的Grid 上,当然,它在两个工具栏之间创建了一个间隙(堆栈面板没有相同的样式当然是工具栏)。

我想在我的堆栈面板上复制工具栏LinearGradientBrush,使其看起来与我的工具栏相同。关键是让东西看起来像一个工具栏。

有没有办法获得ToolBar Style 或使用LinearGradientBrush 定义重新创建它,如果可以,如何?

【问题讨论】:

    标签: wpf styles toolbar stackpanel lineargradientbrush


    【解决方案1】:

    这是您可以做到的一种方法。假设您的工具栏名称之一是“toolBar”。将StackPanel 上的Background 属性绑定到ToolBar 上的Background 属性,如下所示:

    <StackPanel Background="{Binding Path=Background, ElementName=toolBar}" />
    

    希望对您有所帮助! :)

    编辑:

    您可以查看ToolBar here 的控制模板。

    使用的LinearGradientBrush 看起来像这样:

    <LinearGradientBrush x:Key="DarkBrush" StartPoint="0,0" EndPoint="0,1">
      <GradientBrush.GradientStops>
        <GradientStopCollection>
          <GradientStop Color="#FFF" Offset="0.0"/>
          <GradientStop Color="#AAA" Offset="1.0"/>
        </GradientStopCollection>
      </GradientBrush.GradientStops>
    </LinearGradientBrush>
    

    如果您只想使用 this 而不是绑定。 :)

    【讨论】:

    • 现在我感到很惭愧,绑定是最简单的方法,而且效率更高。只要工具栏的样式发生变化,它就会起作用。非常感谢这个!
    【解决方案2】:

    默认模板和样式可用on MSDN,您可能可以从那里提取相关位。

    【讨论】:

    • 仍然不是我想要的,因为我以前访问过这个站点,但至少我相信我在这里找到了终点和起点。感谢您的帮助。
    【解决方案3】:

    我在应用程序中执行完全相同的操作时发现了一个问题。当我在 XP 机器上运行与在 Vista 机器上相同的应用程序时,我发现两个工具栏之间的高度存在 2 个像素的差异。

    为了解决这个问题,我最终创建了一个 StackPanel,其中包含两个工具栏对象(将背景设置为透明)。

    这确保了两个操作系统之间的外观和感觉相同(在公司同时运行这两个操作系统时),并且在您的一个工具栏在没有另一个工具栏的情况下增长的情况下也可以帮助您。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多