我對擴展進度控制的通用模板有點困難。基本上,該模板由一個網格,一些文本信息和實際進度條組成。自定義ProgressBar ControlTemplate
它工作正常,除了當我想切換到垂直方向。一切似乎都正確旋轉,但我沒有得到進度指示器。我希望它的一些愚蠢的我俯瞰,並且只需要第二套眼睛看到的...
這裏是模板:
<ControlTemplate TargetType="{x:Type local:MyProgressControl}">
<Grid x:Name="gridLayout"
Background="{TemplateBinding Background}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" MinHeight="20" />
</Grid.RowDefinitions>
<StackPanel x:Name="stackLabels"
Grid.Row="0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Orientation="Horizontal">
<TextBlock x:Name="txtProgress"
Style="{Binding TextBlockStyle,
RelativeSource={RelativeSource TemplatedParent}}"
Margin="3,1"
Text="{Binding IndicationText,
RelativeSource={RelativeSource TemplatedParent}}"
Visibility="{Binding ShowIndicationText,
RelativeSource={RelativeSource TemplatedParent},
Converter={StaticResource booleanToVisibility}}" />
<TextBlock x:Name="txtValue"
Style="{Binding TextBlockStyle, RelativeSource={RelativeSource TemplatedParent}}"
Margin="3,1"
Text="{Binding RoundedValue, RelativeSource={RelativeSource TemplatedParent}}"
Visibility="{Binding ShowProgressText,
RelativeSource={RelativeSource TemplatedParent},
Converter={StaticResource booleanToVisibility}}" />
<TextBlock x:Name="txtOf"
Style="{Binding TextBlockStyle, RelativeSource={RelativeSource TemplatedParent}}"
Margin="3,1"
Text="/"
Visibility="{Binding ShowProgressText,
RelativeSource={RelativeSource TemplatedParent},
Converter={StaticResource booleanToVisibility}}" />
<TextBlock x:Name="txtMaximum"
Style="{Binding TextBlockStyle, RelativeSource={RelativeSource TemplatedParent}}"
Margin="3,1"
Text="{Binding RoundedMaximum,
RelativeSource={RelativeSource TemplatedParent}}"
Visibility="{Binding ShowProgressText,
RelativeSource={RelativeSource TemplatedParent},
Converter={StaticResource booleanToVisibility}}" />
</StackPanel>
<Border x:Name="PART_Track"
Grid.Row="1"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
CornerRadius="8">
<Border.Background>
<LinearGradientBrush x:Name="trackBrush" StartPoint="0.5, 0" EndPoint="0.5, 1">
<GradientStop Offset="0.0" Color="#6A6A6A" />
<GradientStop Offset="0.2" Color="#949494" />
<GradientStop Offset="0.35" Color="#A9A9A9" />
<GradientStop Offset="0.55" Color="#D3D3D3" />
<GradientStop Offset="0.65" Color="#949494" />
<GradientStop Offset="1.0" Color="#3F3F3F" />
</LinearGradientBrush>
</Border.Background>
<Decorator x:Name="PART_Indicator"
Margin="1"
HorizontalAlignment="Left"
VerticalAlignment="Stretch">
<Border x:Name="borderIndicator"
Background="{TemplateBinding BackgroundBrush}"
CornerRadius="{Binding ElementName=PART_Track, Path=CornerRadius}" />
</Decorator>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="Orientation" Value="Vertical">
<Setter Property="LayoutTransform" TargetName="gridLayout">
<Setter.Value>
<RotateTransform Angle="90" />
</Setter.Value>
</Setter>
<Setter Property="LayoutTransform" TargetName="PART_Track">
<Setter.Value>
<RotateTransform Angle="-90" />
</Setter.Value>
</Setter>
<Setter Property="HorizontalAlignment" TargetName="PART_Indicator" Value="Stretch" />
<Setter Property="VerticalAlignment" TargetName="PART_Indicator" Value="Bottom" />
<Setter Property="LayoutTransform" TargetName="PART_Indicator">
<Setter.Value>
<RotateTransform Angle="-90" />
</Setter.Value>
</Setter>
<Setter Property="HorizontalAlignment" TargetName="borderIndicator" Value="Stretch" />
<Setter Property="VerticalAlignment" TargetName="borderIndicator" Value="Bottom" />
<Setter Property="LayoutTransform" TargetName="borderIndicator">
<Setter.Value>
<RotateTransform Angle="-90" />
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
感謝, WTS
我有一個類似的問題,有一個類似的,但更容易的模板。它只是在垂直方向不起作用。那麼你的解決方案是什麼? – gehho 2010-07-30 06:48:21