3

我的 WP7 和 WP8 应用程序中有一个Slider组件。在 WP7 中,Slider根据其移动Scheduler,但在 WP8 中,它根本不会移动。

是风格化的Slider,我知道 WP8 有一些变化。首先,这些更改到底是什么,我在代码中要更改什么?微软的文档很差。除了微软的变化之外,任何人都知道这可能是什么?

即使我将默认值设置为某个值,拇指也将始终处于其起始位置。我也搬不动。

对我来说,这适用于各种不同的样式,例如来自Mifrosofts 自己的 Slider Styles and Templates

这个有一个模板:

        <Slider x:Name="Slider" IsHitTestVisible="true" Value="{Binding SliderValue, Mode=TwoWay}" Maximum="100" VerticalAlignment="Center" Margin="0,24,0,0" Template="{StaticResource SliderControlTemplate1}" />

这是模板:

        <ControlTemplate x:Key="SliderControlTemplate1" TargetType="Slider">
        <Grid Background="Transparent">
            <VisualStateManager.VisualStateGroups>
                <VisualStateGroup x:Name="CommonStates">
                    <VisualState x:Name="Normal"/>
                    <VisualState x:Name="MouseOver"/>
                    <VisualState x:Name="Disabled">
                        <Storyboard>
                            <DoubleAnimation Duration="0" To="0.1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="HorizontalTrack"/>
                            <DoubleAnimation Duration="0" To="0.1" Storyboard.TargetProperty="Opacity" Storyboard.TargetName="VerticalTrack"/>
                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="HorizontalFill">
                                <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}"/>
                            </ObjectAnimationUsingKeyFrames>
                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Fill" Storyboard.TargetName="VerticalFill">
                                <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource PhoneDisabledBrush}"/>
                            </ObjectAnimationUsingKeyFrames>
                        </Storyboard>
                    </VisualState>
                </VisualStateGroup>
            </VisualStateManager.VisualStateGroups>
            <Grid x:Name="HorizontalTemplate" Margin="{StaticResource PhoneHorizontalMargin}">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="12"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <Rectangle x:Name="HorizontalFill" Fill="{TemplateBinding Foreground}" Height="12" IsHitTestVisible="False" Margin="0"/>
                <Rectangle x:Name="HorizontalTrack" Grid.Column="2" Fill="{TemplateBinding Background}" Height="12" IsHitTestVisible="False" Margin="0" Opacity="0.2"/>
                <RepeatButton x:Name="HorizontalTrackLargeChangeDecreaseRepeatButton" IsTabStop="False" Template="{StaticResource PhoneSimpleRepeatButton}"/>
                <RepeatButton x:Name="HorizontalTrackLargeChangeIncreaseRepeatButton" Grid.Column="2" IsTabStop="False" Template="{StaticResource PhoneSimpleRepeatButton}"/>
                <Thumb x:Name="HorizontalCenterElement" Grid.Column="1" Height="12" Margin="0" Width="12">
                    <Thumb.Template>
                        <ControlTemplate>
                            <Grid ManipulationDelta="ProgressBarManipulationDelta" Width="46" Height="46" VerticalAlignment="Center" HorizontalAlignment="Center">
                                <Image Source="/slider.png"/>
                            </Grid>
                        </ControlTemplate>
                    </Thumb.Template>
                </Thumb>
            </Grid>

        </Grid>
    </ControlTemplate>

我已经尝试了相应的样式。可能是什么问题呢?我应该使用StyleorTemplate吗?两者现在对我来说都是一样的..

4

1 回答 1

2

有同样的问题。在 WP8 之前,我们已经编辑了其原始样式的副本,并根据我们的目的对其进行了修改。后来,当将项目升级到 WP8 时,这种从 WP7 修改的样式导致滑块不再更新,因为此后样式发生了变化。删除样式修复了它。如果仍然需要修改,您应该从 WP8 的滑块组件中获取原始样式。

于 2013-02-27T13:07:51.590 回答