我的 windows phone 8.1 项目包含带有 ProgressBar.xaml(此处覆盖 ProgressRing 样式)和 Menu.xaml(用于弹出项的模板)的“资源”文件夹。
我的 App.xaml 看起来像这样:
<Application
x:Class="AppName.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:AppName">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources/Menu.xaml"/>
<ResourceDictionary Source="Resources/ProgressBar.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>
ProgressBar.xaml 包含generic.xaml 的精确副本<Style TargetType="ProgressRing">
。这种风格在自身内部定义了另一种风格:
<Style x:Key="ProgressRingEllipseStyle" TargetType="Ellipse">
<Setter Property="Width" Value="{ThemeResource ProgressRingElipseThemeSize}"/>
<Setter Property="Height" Value="{ThemeResource ProgressRingElipseThemeSize}"/>
<Setter Property="Margin" Value="{ThemeResource ProgressRingElipseThemeMargin}"/>
<Setter Property="Opacity" Value="0"/>
</Style>
<x:Double x:Key="ProgressRingElipseThemeSize">6.5</x:Double>
除了弹出项目外,我的应用程序周围的 ProgressRingElipseThemeSize = 6.5 都可以。我的 Menu.xaml 模板:
<ControlTemplate TargetType="MenuFlyoutItem"
x:Key="CustomerFlyoutItem">
<StackPanel Orientation="Horizontal">
<Grid MinWidth="40">
<Image Source="ms-appx:///Assets/Check.png"
Stretch="None"
Visibility="{Binding IsSelected,Converter={StaticResource BooleanToVisibility}}" />
<ProgressRing Visibility="{Binding IsLoading,Converter={StaticResource BooleanToVisibility}}"
IsActive ="True"
Foreground="{StaticResource BekeyContrastSolidColorBrush}"
MinHeight="40"
MinWidth="40">
<ProgressRing.Resources>
<x:Double x:Key="ProgressRingElipseThemeSize">3</x:Double>
</ProgressRing.Resources>
</ProgressRing>
</Grid>
<TextBlock Text="{Binding Name}"
Margin="6,0,0,0"/>
</StackPanel>
</ControlTemplate>
在那里,我将 ProgressRing 的高度和宽度设为 40,我想将椭圆的大小更改为 3。但ProgressRingElipseThemeSize
在内部覆盖<ProgressRing.Resources>
并不会做出任何改变。
我确信ProgressRingElipseThemeSize
是我应该改变的。<Style TargetType="ProgressRing">
如果我像这样直接进行更改
<Style x:Key="ProgressRingEllipseStyle" TargetType="Ellipse">
<Setter Property="Width" Value="3"/>
<Setter Property="Height" Value="3"/>
<Setter Property="Margin" Value="{ThemeResource ProgressRingElipseThemeMargin}"/>
<Setter Property="Opacity" Value="0"/>
</Style>
MenuFlyoutItem 看起来很完美,但显然我的应用程序中的其他进度环受到影响,这是不可取的。
如何ProgressRingElipseThemeSize
在不为 ProgressRing 定义全新样式的情况下仅在本地覆盖一个 ProgressRing?