Slider控件在WP8里面改动很大,如果直接使用WP7上的Control Template的话,会导致控件失去效果。

解决方法是使用新的Control Template:

<style targettype="Slider"><br />
    <Setter Property="BorderThickness" Value="0"/><br />
    <Setter Property="BorderBrush" Value="Transparent"/><br />
    <Setter Property="Maximum" Value="10"/><br />
    <Setter Property="Minimum" Value="0"/><br />
    <Setter Property="Value" Value="0"/><br />
    <Setter Property="Background" Value="{StaticResource PhoneChromeBrush}"/><br />
    <Setter Property="Foreground" Value="{StaticResource PhoneAccentBrush}"/><br />
    <Setter Property="Template"><br />
        <Setter.Value><br />
            <ControlTemplate TargetType="Slider"><br />
                <Grid Background="Transparent"><br />
                    <VisualStateManager.VisualStateGroups><br />
                        <VisualStateGroup x:Name="CommonStates"><br />
                            <VisualState x:Name="Normal"/><br />
                            <VisualState x:Name="MouseOver"/><br />
                            <VisualState x:Name="Disabled"><br />
                                <Storyboard><br />
                                    <DoubleAnimation Duration="0" Storyboard.TargetName="HorizontalTrack" Storyboard.TargetProperty="Opacity" To="0.1" /><br />
                                    <DoubleAnimation Duration="0" Storyboard.TargetName="VerticalTrack" Storyboard.TargetProperty="Opacity" To="0.1" /><br />
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="HorizontalFill" Storyboard.TargetProperty="Fill"><br />
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}" /><br />
                                    </ObjectAnimationUsingKeyFrames><br />
                                    <ObjectAnimationUsingKeyFrames Storyboard.TargetName="VerticalFill" Storyboard.TargetProperty="Fill"><br />
                                        <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}" /><br />
                                    </ObjectAnimationUsingKeyFrames><br />
                                </Storyboard><br />
                            </VisualState><br />
                        </VisualStateGroup><br />
                    </VisualStateManager.VisualStateGroups><br />
                    <Grid x:Name="HorizontalTemplate" Margin="{StaticResource PhoneHorizontalMargin}"><br />
                        <Rectangle x:Name="HorizontalTrack" Fill="{TemplateBinding Background}" Height="12" IsHitTestVisible="False" Margin="0,22,0,50"/><br />
                        <Rectangle x:Name="HorizontalFill" Fill="{TemplateBinding Foreground}" Height="12" IsHitTestVisible="False" Margin="0,22,0,50"><br />
                            <Rectangle.Clip><br />
                                <RectangleGeometry Rect="0, 0, 6, 12" /><br />
                            </Rectangle.Clip><br />
                        </Rectangle><br />
                        <Rectangle x:Name="HorizontalCenterElement" HorizontalAlignment="Left" Fill="{StaticResource PhoneForegroundBrush}" Width="12" Height="24" Margin="0,16,0,44"><br />
                            <Rectangle.RenderTransform><br />
                                <TranslateTransform /><br />
                            </Rectangle.RenderTransform><br />
                        </Rectangle><br />
                    </Grid><br />
                    <Grid x:Name="VerticalTemplate" Margin="{StaticResource PhoneVerticalMargin}"><br />
                        <Rectangle x:Name="VerticalTrack" Fill="{TemplateBinding Background}" Width="12" IsHitTestVisible="False" Margin="18,0,18,0"/><br />
                        <Rectangle x:Name="VerticalFill" Fill="{TemplateBinding Foreground}" Width="12" IsHitTestVisible="False" Margin="18,0,18,0"><br />
                            <Rectangle.Clip><br />
                                <RectangleGeometry Rect="0, 0, 12, 6" /><br />
                            </Rectangle.Clip><br />
                        </Rectangle><br />
                        <Rectangle x:Name="VerticalCenterElement" VerticalAlignment="Top" Fill="{StaticResource PhoneForegroundBrush}" Width="24" Height="12" Margin="12,0,12,0"><br />
                            <Rectangle.RenderTransform><br />
                                <TranslateTransform /><br />
                            </Rectangle.RenderTransform><br />
                        </Rectangle><br />
                    </Grid><br />
                </Grid><br />
            </ControlTemplate><br />
        </Setter.Value><br />
    </Setter><br />
</style>

以上xaml代码来自于Program Files (x86)\Microsoft SDKs\Windows Phone\v8.0\Design\System.Windows.xaml文件。

参考资料:
[1] App platform compatibility for Windows Phone

» 转载请注明来源及链接:未来代码研究所

Related Posts:

Leave a Reply

World Line
Time Machine
Online Tools