简体   繁体   中英

Global resource does not apply style to control in xaml

I have below style declared for ProgressBar in App.xaml

<Application.Resources>
        <LinearGradientBrush x:Key="ProgressBarBorderBrush"
                     EndPoint="0,1"
                     StartPoint="0,0">
            <LinearGradientBrush.GradientStops>
                <GradientStop Color="#B2B2B2"
                      Offset="0"/>
                <GradientStop Color="#8C8C8C"
                      Offset="1"/>
            </LinearGradientBrush.GradientStops>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="ProgressBarBackground"
                     EndPoint="1,0"
                     StartPoint="0,0">
            <LinearGradientBrush.GradientStops>
                <GradientStop Color="#BABABA"
                      Offset="0"/>
                <GradientStop Color="#C7C7C7"
                      Offset="0.5"/>
                <GradientStop Color="#BABABA"
                      Offset="1"/>
            </LinearGradientBrush.GradientStops>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="ProgressBarTopHighlight"
                     StartPoint="0,0"
                     EndPoint="0,1">
            <LinearGradientBrush.GradientStops>
                <GradientStop Color="#80FFFFFF"
                      Offset="0.05"/>
                <GradientStop Color="#00FFFFFF"
                      Offset="0.25"/>
            </LinearGradientBrush.GradientStops>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="ProgressBarGlassyHighlight"
                     StartPoint="0,0"
                     EndPoint="0,1">
            <LinearGradientBrush.GradientStops>
                <GradientStop Color="#50FFFFFF"
                      Offset="0.5385"/>
                <GradientStop Color="#00FFFFFF"
                      Offset="0.5385"/>
            </LinearGradientBrush.GradientStops>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="ProgressBarIndicatorGlassyHighlight"
                     StartPoint="0,0"
                     EndPoint="0,1">
            <LinearGradientBrush.GradientStops>
                <GradientStop Color="#90FFFFFF"
                      Offset="0.5385"/>
                <GradientStop Color="#00FFFFFF"
                      Offset="0.5385"/>
            </LinearGradientBrush.GradientStops>
        </LinearGradientBrush>
        <RadialGradientBrush x:Key="ProgressBarIndicatorLightingEffectLeft"
                     RadiusX="1"
                     RadiusY="1"
                     RelativeTransform="1,0,0,1,0.5,0.5">
            <RadialGradientBrush.GradientStops>
                <GradientStop Color="#60FFFFC4"
                      Offset="0"/>
                <GradientStop Color="#00FFFFC4"
                      Offset="1"/>
            </RadialGradientBrush.GradientStops>
        </RadialGradientBrush>
        <LinearGradientBrush x:Key="ProgressBarIndicatorLightingEffect"
                     StartPoint="0,1"
                     EndPoint="0,0">
            <LinearGradientBrush.GradientStops>
                <GradientStop Color="#60FFFFC4"
                      Offset="0"/>
                <GradientStop Color="#00FFFFC4"
                      Offset="1"/>
            </LinearGradientBrush.GradientStops>
        </LinearGradientBrush>
        <RadialGradientBrush x:Key="ProgressBarIndicatorLightingEffectRight"
                     RadiusX="1"
                     RadiusY="1"
                     RelativeTransform="1,0,0,1,-0.5,0.5">
            <RadialGradientBrush.GradientStops>
                <GradientStop Color="#60FFFFC4"
                      Offset="0"/>
                <GradientStop Color="#00FFFFC4"
                      Offset="1"/>
            </RadialGradientBrush.GradientStops>
        </RadialGradientBrush>

        <LinearGradientBrush x:Key="ProgressBarIndicatorDarkEdgeLeft"
                     StartPoint="0,0"
                     EndPoint="1,0">
            <LinearGradientBrush.GradientStops>
                <GradientStop Color="#0C000000"
                      Offset="0"/>
                <GradientStop Color="#20000000"
                      Offset="0.3"/>
                <GradientStop Color="#00000000"
                      Offset="1"/>
            </LinearGradientBrush.GradientStops>
        </LinearGradientBrush>
        <LinearGradientBrush x:Key="ProgressBarIndicatorDarkEdgeRight"
                     StartPoint="0,0"
                     EndPoint="1,0">
            <LinearGradientBrush.GradientStops>
                <GradientStop Color="#00000000"
                      Offset="0"/>
                <GradientStop Color="#20000000"
                      Offset="0.7"/>
                <GradientStop Color="#0C000000"
                      Offset="1"/>
            </LinearGradientBrush.GradientStops>
        </LinearGradientBrush>

        <LinearGradientBrush x:Key="ProgressBarIndicatorAnimatedFill" 
                     StartPoint="0,0"
                     EndPoint="1,0">
            <LinearGradientBrush.GradientStops>
                <GradientStop Color="#00FFFFFF"
                      Offset="0"/>
                <GradientStop Color="#60FFFFFF"
                      Offset="0.4"/>
                <GradientStop Color="#60FFFFFF"
                      Offset="0.6"/>
                <GradientStop Color="#00FFFFFF"
                      Offset="1"/>
            </LinearGradientBrush.GradientStops>
        </LinearGradientBrush>

        <Style x:Key="{x:Type ProgressBar}"
       TargetType="{x:Type ProgressBar}">
            <Setter Property="Foreground"
            Value="#01D328"/>
            <Setter Property="Background"
            Value="{StaticResource ProgressBarBackground}"/>
            <Setter Property="BorderBrush"
            Value="{StaticResource ProgressBarBorderBrush}"/>
            <Setter Property="BorderThickness"
            Value="1"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ProgressBar}">
                        <Grid Name="TemplateRoot"
                      SnapsToDevicePixels="true">
                            <Rectangle Fill="{TemplateBinding Background}"
                               RadiusX="2"
                               RadiusY="2"/>
                            <Border Background="{StaticResource ProgressBarGlassyHighlight}"
                            Margin="1"
                            CornerRadius="2"/>
                            <Border BorderBrush="#80FFFFFF"
                            Background="{StaticResource ProgressBarTopHighlight}"
                            BorderThickness="1,0,1,1"
                            Margin="1"/>
                            <Rectangle Name="PART_Track"
                               Margin="1"/>

                            <Decorator x:Name="PART_Indicator"
                               HorizontalAlignment="Left"
                               Margin="1">
                                <Grid Name="Foreground">
                                    <Rectangle x:Name="Indicator"
                                       Fill="{TemplateBinding Foreground}"/>
                                    <Grid x:Name="Animation" ClipToBounds="true">
                                        <Rectangle x:Name="PART_GlowRect" Width="100" 
                                            Fill="{StaticResource ProgressBarIndicatorAnimatedFill}"
                                            Margin="-100,0,0,0"
                                            HorizontalAlignment="Left">
                                        </Rectangle>
                                    </Grid>
                                    <Grid x:Name="Overlay">
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition MaxWidth="15"/>
                                            <ColumnDefinition Width="0.1*"/>
                                            <ColumnDefinition MaxWidth="15"/>
                                        </Grid.ColumnDefinitions>
                                        <Grid.RowDefinitions>
                                            <RowDefinition />
                                            <RowDefinition />
                                        </Grid.RowDefinitions>
                                        <Rectangle x:Name="LeftDark"
                                           Grid.RowSpan="2"
                                           Fill="{StaticResource ProgressBarIndicatorDarkEdgeLeft}"
                                           RadiusX="1"
                                           RadiusY="1"
                                           Margin="1,1,0,1"/>
                                        <Rectangle x:Name="RightDark"
                                           Grid.RowSpan="2"
                                           Grid.Column="2"
                                           RadiusX="1"
                                           RadiusY="1"
                                           Fill="{StaticResource ProgressBarIndicatorDarkEdgeRight}"
                                           Margin="0,1,1,1"/>
                                        <Rectangle x:Name="LeftLight"
                                           Grid.Column="0"
                                           Grid.Row="2"
                                           Fill="{StaticResource ProgressBarIndicatorLightingEffectLeft}"/>
                                        <Rectangle x:Name="CenterLight"
                                           Grid.Column="1"
                                           Grid.Row="2"
                                           Fill="{StaticResource ProgressBarIndicatorLightingEffect}"/>
                                        <Rectangle x:Name="RightLight"
                                           Grid.Column="2"
                                           Grid.Row="2"
                                           Fill="{StaticResource ProgressBarIndicatorLightingEffectRight}"/>
                                        <Border x:Name="Highlight1"
                                        Grid.RowSpan="2"
                                        Grid.ColumnSpan="3"
                                        Background="{StaticResource ProgressBarIndicatorGlassyHighlight}"/>
                                        <Border x:Name="Highlight2"
                                        Grid.RowSpan="2" 
                                        Grid.ColumnSpan="3"
                                        Background="{StaticResource ProgressBarTopHighlight}"/>
                                    </Grid>
                                </Grid>
                            </Decorator>

                            <Border BorderThickness="{TemplateBinding BorderThickness}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            CornerRadius="2"/>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="Orientation"
                             Value="Vertical">
                                <Setter TargetName="TemplateRoot"
                                Property="LayoutTransform">
                                    <Setter.Value>
                                        <RotateTransform Angle="-90"/>
                                    </Setter.Value>
                                </Setter>
                            </Trigger>

                            <Trigger Property="IsIndeterminate"
                             Value="true">
                                <Setter TargetName="LeftDark"
                                Property="Visibility"
                                Value="Collapsed"/>
                                <Setter TargetName="RightDark"
                                Property="Visibility"
                                Value="Collapsed"/>
                                <Setter TargetName="LeftLight"
                                Property="Visibility"
                                Value="Collapsed"/>
                                <Setter TargetName="CenterLight"
                                Property="Visibility"
                                Value="Collapsed"/>
                                <Setter TargetName="RightLight"
                                Property="Visibility"
                                Value="Collapsed"/>
                                <Setter TargetName="Indicator"
                                Property="Visibility"
                                Value="Collapsed"/>
                            </Trigger>
                            <Trigger Property="IsIndeterminate"
                             Value="false">
                                <Setter TargetName="Animation"
                                Property="Background"
                                Value="#80B5FFA9"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
</Application.Resources>

As you can see <Style x:Key="{x:Type ProgressBar}" TargetType="{x:Type ProgressBar}"> has been mentioned and as per my knowledge, this should be applied to all ProgressBar in the application.

I have below ProgressBar in Login.xaml page and this is kept under View folder.

<ProgressBar Name="LoginProgress" Minimum="0" Maximum="100" HorizontalAlignment="Left" 
 Height="24" Margin="99,124,0,0" VerticalAlignment="Top" Width="109" 
 Style="{DynamicResource {x:Type ProgressBar}}">

</ProgressBar>

And I have also implicitly mentioned Style property for ProgressBar. After all of this, the style is not getting applied. Searched through all the pages in google but couldn't quite get proper resource to understand and hence am here. Could anyone let me know or provide more insights on how this has to be done?

Please refer below stack overflow link. This issue sis discussed in depth here. I guess answer given by Dylan should help you out.

what does x:Key="{x:Type TextBox}" do?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM