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

发布于 2024-08-02 20:19:49 字数 2072 浏览 2 评论 0原文

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

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

我需要一种方法来覆盖样式中的 VerticalAlignment,而无需为 Expander 重新创建 Aero 模板。 我似乎无法引用圆形和箭头对象。 我也尝试过覆盖切换按钮,但没有成功。

正如您在下面看到的,我可以覆盖 Aero Expander 的某些方面。 我只需要一点点推动即可获得切换按钮圆和箭头对象来更改垂直对齐。

谢谢

代码示例如下:

<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>

Currently, I am referencing the Aero theme in my App.xml file.
In the main.xml file, I am using expanders to display the content in a resizable width app.
(For this example, I limited the width to 500)

The expander header content generally will be short, but it allows for up to 500 chars.
Depending on the window size (600 pixels by default), the content can wrap (thereby stretching the expander header downwards).
This is fine, but the toggle button (a circle /w arrow) is set for VerticalAlignment=center from what I can tell.

I need a way to override that VerticalAlignment in a style without re-creating the Aero template for the Expander.
I just cant seem to reference the circle and arrow objects.
I have tried overriding Toggle Button as well, with no luck.

As you can see below, I can override some aspects of the Aero Expander.
I just need that little nudge to get the Toggle Button Circle and Arrow objects to change the VerticalAlignment.

Thanks

Code example follows:

<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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

锦上情书 2024-08-09 20:19:49

如果您查看Expander<的默认模板 /code>,您可以看到为什么您的属性设置器都不起作用:

<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>

ToggleButtonVerticalAlignment 就是您所追求的,并且没有它的设置器。

在我看来,没有办法通过Style来改变这个对齐属性。您必须提供新模板。

If you look at the default template for the Expander, you can see why none of your property setters are working:

<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>

The ToggleButton's VerticalAlignment is what you are after, and there are no setters for it.

It seems to me that there is no way to change this alignment property through the Style. You must provide a new template.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文