如何引用切换按钮圆并覆盖Aero主题扩展器的垂直对齐?

时间:2009-08-25 21:34:42

标签: wpf button styles toggle aero

目前,我在App.xml文件中引用了Aero主题。 在main.xml文件中,我使用扩展器在可调整大小的宽度应用程序中显示内容。 (对于此示例,我将宽度限制为500)

扩展器标头内容通常很短,但最多允许500个字符。 根据窗口大小(默认为600像素),内容可以换行(从而向下拉伸扩展器头)。 这很好,但切换按钮(圆圈/箭头箭头)是根据我的判断设置为VerticalAlignment = center。

我需要一种方法来覆盖样式中的VerticalAlignment,而无需为Expander重新创建Aero模板。 我似乎无法引用圆圈和箭头对象。 我也试过重写Toggle Button,没有运气。

如下所示,我可以覆盖Aero Expander的某些方面。 我只需要那个小小的推动来获得Toggle Button Circle和Arrow对象来改变VerticalAlignment。

由于

代码示例如下:

<Window.Resources>
    <Style TargetType="{x:Type Expander}" BasedOn="{StaticResource {x:Type Expander}}">
        <Setter Property="Foreground" Value="White" />
        <Setter Property="Background" Value="#464646" />
        <Setter Property="Width" Value="Auto" />
        <Setter Property="Margin" Value="1,0,1,0" />
        <Setter Property="IsExpanded" Value="False" />
    </Style>
</Window.Resources>

<Expander ContextMenu="{StaticResource cMnu}" Width="auto">
    <Expander.Header>
        <StackPanel Orientation="Horizontal" Width="auto" Margin="0">
            <TextBlock Width="65">Normal</TextBlock>
            <TextBlock Width="80">Open</TextBlock>
            <TextBlock Width="80">10/31/2009</TextBlock>
            <TextBlock TextWrapping="Wrap" Width="500">
            Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
            Aliquam ultrices auctor magna, sit amet commodo ipsum accumsan eu. 
            Sed a mollis felis. Nam ullamcorper augue vel mauris consequat imperdiet. 
            Nunc in augue mauris. 
            Quisque metus tortor, porttitor nec auctor id, mollis nec ipsum. 
            Suspendisse eget ipsum vitae lectus fermentum porta. 
            Aliquam erat volutpat. 
            Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. 
            Phasellus congue dui ac arcu eleifend a amet.
            </TextBlock>
        </StackPanel>
    </Expander.Header>
</Expander>

1 个答案:

答案 0 :(得分:1)

如果您查看Expander的{​​{3}},就可以了解为什么您的所有资产制定者都无法正常工作:

<Grid>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="20" />
    <ColumnDefinition Width="*" />
  </Grid.ColumnDefinitions>
  <ToggleButton IsChecked="{Binding Path=IsExpanded,Mode=TwoWay,
                RelativeSource={RelativeSource TemplatedParent}}"
                OverridesDefaultStyle="True" 
                Template="{StaticResource ExpanderToggleButton}" 
                Background="{StaticResource NormalBrush}" />
  <ContentPresenter Grid.Column="1"
                    Margin="4" 
                    ContentSource="Header" 
                    RecognizesAccessKey="True" />
</Grid>

ToggleButton的{​​{1}}就是你所追求的,而且没有任何设定者。

在我看来,无法通过VerticalAlignment更改此对齐属性。您必须提供新模板。