2011-04-06 64 views
0

我有两个ToolBar并排(我必须这样做,所以我可以对齐按钮左右) 但现在,我不得不添加一些文字,可以在两个工具栏之间左右对齐或居中。我在第二个位置(在工具栏之间)在Grid上放置了一个中的TextBlock文本,当然,它在两个工具栏之间创建了间隙(stackPanel的样式与工具栏不同,课程)。给予stackPanel相同的LinearGradientBrush作为工具栏默认

我想在我的stackpanel上复制工具栏LinearGradientBrush,所以它看起来和我的工具栏一样。重点是让事情看起来像一个工具栏。

有没有办法获得ToolBarStyle或使用LinearGradientBrush定义重新创建它,如果是这样,怎么办?

回答

2

这里有一种方法可以做到这一点。说你的工具栏名称之一是“toolBar”。在StackPanelBackground属性绑定到在ToolBarBackground财产如:

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

希望帮助! :)

编辑:

您可以检查出的控件模板为ToolBarhere

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> 

倘若你只是想改用这种绑定。 :)

+0

现在我感到羞愧,绑定是最简单的方法,更有效率。只要工具栏的样式发生变化,它就会工作。非常感谢这一个! – Fjodr 2011-04-06 16:45:01

+0

不客气!^__ ^ – 2011-04-06 17:03:50

0

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

+0

仍然不是我在找的东西,因为我之前曾访问过这个网站,但至少我相信我在这里获得了endPoint和StartPoint。谢谢您的帮助。 – Fjodr 2011-04-06 16:15:34

0

我在应用程序中完成同样的事情时发现问题。在XP机器上运行相同的应用程序时,我使用Vista机器,发现两个工具栏之间的高度差异为2像素。

为了解决这个问题,我最终创建了一个容纳两个工具栏对象的StackPanel(设置背景为透明)。

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