2009-12-30 5 views
0

WPF에서 ProgressBar를 다시 스키닝하는 데 약간의 문제가 있습니다. 특히 내가하는 일과 관계없이 내부 표시기를 약 99 %로 잘라냅니다. OpacityMask까지 클리핑에서부터 모든 종류의 작업을 시도했지만 정상이 끊어지는 것을 막을 수는 없습니다. 여기에 무슨 일이 일어나고 있는거야?ProgressBar가 값의 맨 위에 클립합니다.

코드 :

<Style x:Key="BarrelStyle" TargetType="{x:Type ProgressBar}"> 
     <Setter Property="Value" Value="100" /> 
     <Setter Property="Orientation" Value="Vertical" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type ProgressBar}"> 
        <Grid> 
         <Border CornerRadius="10" BorderThickness="1" Padding="3,3,3,3" x:Name="PART_Track" Background="Blue"> 
          <Border x:Name="PART_Indicator" CornerRadius="10" BorderBrush="#FFC06565" BorderThickness="0" HorizontalAlignment="Stretch" VerticalAlignment="Bottom"> 
           <Grid> 
            <Border x:Name="Indicator_Content" CornerRadius="10" Background="Red" BorderBrush="White" BorderThickness="1"/> 
            <Border x:Name="Indicator_Gloss" CornerRadius="10" > 
             <Border.Background> 
              <LinearGradientBrush EndPoint="1.0,0.5" StartPoint="0.05,0.5"> 
               <GradientStop Color="#75000000" Offset="0"/> 
               <GradientStop Color="#7EFFFFFF" Offset="0.5"/> 
               <GradientStop Color="#75000000" Offset="1"/> 
              </LinearGradientBrush> 
             </Border.Background> 
            </Border> 
           </Grid> 
          </Border> 
         </Border> 
        </Grid> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
+0

이것은 기본 동작과 다릅니다. – GraemeF

답변

1

가장 안쪽 그리드의 Margin="0,4" 설정을 시도하고 "PART_Indicator"Margin="0,0,0,-4"을 설정합니다. 또는 아래 코드를 사용하십시오.

<Style x:Key="BarrelStyle" TargetType="{x:Type ProgressBar}"> 
    <Setter Property="Value" Value="100" /> 
    <Setter Property="Orientation" Value="Vertical" /> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type ProgressBar}"> 
       <Grid> 
        <Border CornerRadius="10" BorderThickness="1" Padding="3,3,3,3" x:Name="PART_Track" Background="Blue"> 
         <Border x:Name="PART_Indicator" CornerRadius="10" BorderBrush="#FFC06565" BorderThickness="0" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="0,0,0,-4"> 
          <Grid Margin="0,4"> 
           <Border x:Name="Indicator_Content" CornerRadius="10" Background="Red" BorderBrush="White" BorderThickness="1"/> 
           <Border x:Name="Indicator_Gloss" CornerRadius="10" > 
            <Border.Background> 
             <LinearGradientBrush EndPoint="1.0,0.5" StartPoint="0.05,0.5"> 
              <GradientStop Color="#75000000" Offset="0"/> 
              <GradientStop Color="#7EFFFFFF" Offset="0.5"/> 
              <GradientStop Color="#75000000" Offset="1"/> 
             </LinearGradientBrush> 
            </Border.Background> 
           </Border> 
          </Grid> 
         </Border> 
        </Border> 
       </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

그래, 그거야. 기본적으로 모든 것을 새로운 경계에 놓음으로써 내가 필요한 것을 얻습니다. 감사! –

관련 문제