2016-07-08 123 views
2

我有以下聲明爲ProgressBar風格,以控制App.xaml全球資源不適風格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> 

正如你可以看到<Style x:Key="{x:Type ProgressBar}" TargetType="{x:Type ProgressBar}">已經提到,並按照我所知,這應該適用於所有ProgressBar在應用程序中。

我在ProgressBar以下Login.xaml頁面,這是保存在View文件夾。

<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> 

而且我還隱式提到了ProgressBar的Style屬性。畢竟,風格並沒有得到應用。在谷歌的所有頁面搜索,但不能得到適當的資源來理解,因此在這裏。任何人都可以讓我知道或提供更多的見解如何做到這一點?

+0

指定作品(只是嘗試將其粘貼到一個新的項目)的代碼 - 你甚至都不需要了'DynamicResource'。是否有可能加載應用程序資源並覆蓋XAML? –

+0

沒有@EliArbel ..它只是一個新的項目,其中我還沒有寫任何東西,除了這個進度條.. –

回答

3

請參閱下面的堆棧溢出鏈接。這個問題在這裏深入討論。 我想迪倫給出的答案應該可以幫助你。

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

+0

感謝很多朋友.. :) –