我的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看起来很完美,但显然我的应用程序中的其他进度响应受到影响,这是不可取的。
如果没有为ProgressRing定义全新的样式,我怎样才能在本地覆盖一个ProgressRing的ProgressRingElipseThemeSize
?
答案 0 :(得分:1)
如果没有为ProgressRing定义全新的样式,我如何在本地为一个ProgressRing覆盖ProgressRingElipseThemeSize?
您只能覆盖App.xaml中的系统级资源。如果您只想更改一个进度响铃,则需要重新模板控件。