通用Windows平台(UWP)中的Xaml样式子控件



我想知道如何在样式定义中设置UWP上的样式目标子控件。

WPF似乎有"Style.Resources"来定义子样式,但UWP 似乎不是这样

wpf:wpf中的示例-如何创建将样式应用于子类型

的样式

如果你想把样式放在单独的工作表中(你应该这样做。我在控件中显示了样式,因为我误读了,认为这是你想要的),你可以创建一个Resources文件夹并添加不同的ResourceDictionary。就我个人而言,我通常会为画笔、样式、模板和转换器创建一个单独的词典。然后在App.xaml 中的ResourceDictionary.MergedDictionaries中声明它们

  <Application
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
RequestedTheme="Light">
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
          <ResourceDictionary Source="/Resources/Brushes.xaml" />
          <ResourceDictionary Source="/Resources/Styles.xaml" />
            <ResourceDictionary Source="/Resources/Converters.xaml" />
            <ResourceDictionary Source="/Resources/Templates.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

您可以在父控件的ResourceDictionary中定义样式。在Window.Resources中定义的样式适用于所有矩形,因为它没有指定键,所以第一个StackPanel中的矩形是黄色的并且很小。第二个StackPanel定义了它自己的资源,它的子级使用这些资源,它们最终会有不同的颜色和更大的尺寸。还有使用BasedOn 的样式继承

<Window x:Class="GBTest.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-GBTest"
    mc:Ignorable="d"
    Title="MainWindow"
    Height="350"
    Width="525">
<!--Default style defined in the Window Resources-->
<Window.Resources>
    <Style TargetType="Rectangle">
        <Setter Property="Width"
                Value="100" />
        <Setter Property="Height" Value="100" />
        <Setter Property="Fill"
                Value="Yellow" />
    </Style>
</Window.Resources>
<StackPanel>
    <Rectangle />
    <StackPanel>
        <!--The styles defined in the resources of this StckPanel will apply to its children, overriding the default style defined in the Window Resources-->
        <StackPanel.Resources>
            <Style TargetType="Rectangle"
                   x:Key="BigStyle">
                <Setter Property="Height"
                        Value="200" />
                <Setter Property="Width"
                        Value="200" />
            </Style>
            <Style TargetType="Rectangle"
                   x:Key="RedStyle"
                   BasedOn="{StaticResource BigStyle}">
                <Setter Property="Fill"
                        Value="Red" />
            </Style>
            <Style TargetType="Rectangle"
                   BasedOn="{StaticResource BigStyle}"
                   x:Key="BlueStyle">
                <Setter Property="Fill"
                        Value="Blue" />
            </Style>
        </StackPanel.Resources>
        <Rectangle Style="{StaticResource RedStyle}" />
        <Rectangle Style="{StaticResource BlueStyle}" />
    </StackPanel>
</StackPanel>

相关内容

  • 没有找到相关文章

最新更新