离散Windows手机滑块

时间:2013-10-03 07:40:26

标签: windows-phone-8

有没有办法在Windows Phone 8滑块中添加步骤我希望我的滑块只接受值0,1,2,3,4。

此外,我希望模板是离散的,在滑块上的每个值中显示一条细线,就像在Windows Phone 8设置中轻松访问一样。

滑块应该像4个矩形的薄盒子,如果我滑动填充,

提前致谢

3 个答案:

答案 0 :(得分:2)

您可以尝试注册附加属性以进行数学舍入,而不是接触第三方控件。作为一个非常快速和肮脏的例子(可能是需要发生的事情的顶部)你可以创建这样的东西。

public class SliderExtensions
{
    public static readonly DependencyProperty IntegerValueProperty = DependencyProperty.RegisterAttached("IntegerValue", typeof(int), typeof(SliderExtensions), new PropertyMetadata(1));

    public static void SetIntegerValue(DependencyObject element, int value)
    {
        ((Slider)element).ValueChanged += (s, e) => { ((Slider)s).Value = Math.Round(((Slider)s).Value); };
    }

    public static int GetIntegerValue(DependencyObject element)
    {
        return (int)((Slider)element).Value;
    }
}

然后在Slider中使用它,如下所示。

<StackPanel>
    <Slider x:Name="sld" Minimum="0" Maximum="4" SmallChange="1" helper:SliderExtensions.IntegerValue="0" />
    <TextBlock Text="{Binding ElementName=sld, Path=Value}" />
</StackPanel>

不要忘记将“helper”命名空间添加到您的XAML中,除了非常快速的外观之外,这很大程度上是未经测试的。

答案 1 :(得分:1)

使用滚动查看器可以制作滑块或者你可以使用telrik控件。它提供了良好的滑块控制,请参考下面的链接

SlideView

Slide Redcontrol for wp

希望它会帮助你

答案 2 :(得分:0)

<Grid>
                   <Grid.ColumnDefinitions>
                        <ColumnDefinition></ColumnDefinition>
                        <ColumnDefinition></ColumnDefinition>
                        <ColumnDefinition></ColumnDefinition>
                    </Grid.ColumnDefinitions>
                    <TextBlock Name="TotalPlanedLeave" Grid.ColumnSpan="2" Text="Total Planed Leaves :"></TextBlock>
                    <TextBlock Grid.Column="2" HorizontalAlignment="Left" Name="l1" Text="1" ></TextBlock>
</Grid>

<Slider Name="TotalPlanedLeaveS" ValueChanged="TotalPlanedLeaveS_ValueChanged" ></Slider>    

中的代码

 private void TotalPlanedLeaveS_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
        {
            l1.Text = (Convert.ToInt32(TotalPlanedLeaveS.Value)).ToString();

        }