2013-03-18 2 views
2

ProgressBar을 사용하지만 테마를 변경하면 모양이 달라집니다.테마를 변경하지 않고로드 바를 만드는 방법은 무엇입니까?

<StackPanel VerticalAlignment="Center" HorizontalAlignment="Center" 
      Background="Transparent"> 
    <ProgressBar IsIndeterminate="True" Height="20" Width="300" 
       VerticalAlignment="Center" BorderThickness="0" 
       BorderBrush="Transparent" HorizontalAlignment="Center" 
       Foreground="#0A8098" > 
     <ProgressBar.Background> 
      <ImageBrush ImageSource="/ClientApplication;component/Images/ProgressBackground.png"/> 
     </ProgressBar.Background> 
     <ProgressBar.Clip> 
      <RectangleGeometry RadiusX="20.5" RadiusY="20.5" Rect="0,0,300,19"/> 
     </ProgressBar.Clip> 
    </ProgressBar> 

    <TextBlock Text="LOADING PLEASE WAIT" Margin="0 10 0 0" VerticalAlignment="Center" 
       HorizontalAlignment="Center" Foreground="#FFFFFF" /> 
</StackPanel> 

및 이미지 :

나는 개인 설정 옵션 (즉, 바로 바탕 화면에서 클릭) Windows 고전 테마 (즉, 기본 및 고 대비 테마) 다음과 같이에서 윈도우 테마를 변경

classic theme

후 나는 다시 창문 윈도우 7 (즉, 에어로 테마)에 고전 테마를 변경,

aero theme

하지만 처음에는 좋지만 변화가없는 테마를 원합니다.

어떻게해야할까요? 감사합니다. .

답변

1

ProgressBar은 Windows 테마에 종속됩니다. 원하는 경우 자신의 진행률 막대를 만들고 표시/숨길 수 있습니다.

단점은 진행률에 연결하려면 논리를 수동으로 작성해야한다는 것입니다.

WPF를 사용하면 자신의 진행률 표시 줄을 그려 원하는대로 움직일 수 있습니다.

<Rectangle Name="LoadingRectangle" Stroke="Black" Fill="#C0000000" Visibility="{Binding Path=LoadingIcon}" /> 
<Canvas Name="LoadingIcon" RenderTransformOrigin="0.5,0.5" Width="120" Height="120" Visibility="{Binding Path=LoadingIcon}" >  

<Ellipse Width="19.5" Height="19.5" Canvas.Left="20.1696" Canvas.Top="9.76358" Stretch="Fill" Fill="DarkGoldenrod"/>   
<Ellipse Width="18" Height="18" Canvas.Left="2.86816" Canvas.Top="29.9581" Stretch="Fill" Fill="DarkGoldenrod" OpacityMask="#E9000000" />   
<Ellipse Width="17" Height="17" Canvas.Left="5.03758e-006" Canvas.Top="57.9341" Stretch="Fill" Fill="DarkGoldenrod" OpacityMask="#E1000000" />   
<Ellipse Width="16" Height="16" Canvas.Left="12" Canvas.Top="85" Stretch="Fill" Fill="DarkGoldenrod" OpacityMask="#D2000000" />   
<Ellipse Width="15" Height="15" Canvas.Left="37" Canvas.Top="102" Stretch="Fill" Fill="DarkGoldenrod" OpacityMask="#BC000000" />   
<Ellipse Width="14" Height="14" Canvas.Left="66" Canvas.Top="101" Stretch="Fill" Fill="DarkGoldenrod" OpacityMask="#9C000000" />   
<Ellipse Width="13" Height="13" Canvas.Left="91" Canvas.Top="86" Stretch="Fill" Fill="DarkGoldenrod" OpacityMask="#7B000000" />   
<Ellipse Width="11" Height="11" Canvas.Left="106" Canvas.Top="65" Stretch="Fill" Fill="DarkGoldenrod" OpacityMask="#49000000" />   
<Ellipse Width="10" Height="10" Canvas.Left="104" Canvas.Top="39" Stretch="Fill" Fill="DarkGoldenrod" OpacityMask="#27000000" />   
<Ellipse Width="21.835" Height="21.862" Canvas.Left="47.2783" Canvas.Top="0.5" Stretch="Fill" Fill="DarkGoldenrod"></Ellipse> 

<Canvas.RenderTransform>   
<RotateTransform x:Name="SpinnerRotate" Angle="0" />   
</Canvas.RenderTransform>   
<Canvas.Triggers> 

<EventTrigger RoutedEvent="ContentControl.Loaded">   
<BeginStoryboard>   
<Storyboard> 

<DoubleAnimation Storyboard.TargetName="SpinnerRotate" Storyboard.TargetProperty="(RotateTransform.Angle)" From="0" To="360" Duration="0:0:01" RepeatBehavior="Forever" /> 

</Storyboard>   
</BeginStoryboard>   
</EventTrigger>   
</Canvas.Triggers>   
</Canvas> 
+0

감사합니다. 나는 스피너가 아닌 사각형 진행 표시 줄이 필요하다. 나는 윈도우 XP 진도 표시 줄처럼 필요합니다. –

+0

나는 끝냈다. 그러나 스타일을 적용했을 때 멈춤. –

+0

몇 가지 코드가 있습니까? – Remy