WinUI - XAML样式化另一个样式的子项

dgenwo3n  于 2022-12-07  发布在  其他
关注(0)|答案(1)|浏览(147)

我在WinUI项目的App.XAML文件中全局声明了以下样式:

<Style TargetType="Grid" x:Key="PageContentGrid">
    <Setter Property="Margin" Value="5"/>
    <Setter Property="RowSpacing" Value="5"/>
    <Setter Property="ColumnSpacing" Value="5"/>
</Style>

我的目标是添加另一个样式定义,该定义只针对作为实现PageContentGrid样式的Grid的一部分的Button(请参见下面的示例xaml代码)。有什么方法可以做到这一点吗?

<Grid Style={StaticResource PageContentGrid}>
    <Button/> <!-- STYLED -->
</Grid>
<Grid>
    <Button/><!-- NOT STYLED -->
</Grid>
t5fffqht

t5fffqht1#

AFAIK,您可以在WPF中这样做,但不能在WinUI 3或UWP中这样做。

应用程序.xaml.cs

<Style
    x:Key="PageContentGrid"
    TargetType="Grid">
    <Setter Property="BorderBrush" Value="HotPink" />
    <Setter Property="BorderThickness" Value="1" />
    <Setter Property="Margin" Value="5" />
    <Setter Property="RowSpacing" Value="5" />
    <Setter Property="ColumnSpacing" Value="5" />
</Style>
<Style TargetType="Button" x:Key="PageContentGridButton">
    <Setter Property="Foreground" Value="HotPink" />
</Style>

.xaml格式

<Grid RowDefinitions="*,*">
    <Grid
        Grid.Row="0"
        Style="{StaticResource PageContentGrid}">
        <Grid.Resources>
            <Style
                BasedOn="{StaticResource PageContentGridButton}"
                TargetType="Button" />
        </Grid.Resources>
        <Button Content="Button with style" />
    </Grid>
    <Grid Grid.Row="1">
        <Button Content="Button without style" />
    </Grid>
</Grid>

相关问题