有没有办法在Windows Phone 8滑块中添加步骤我希望我的滑块只接受值0,1,2,3,4。
此外,我希望模板是离散的,在滑块上的每个值中显示一条细线,就像在Windows Phone 8设置中轻松访问一样。
滑块应该像4个矩形的薄盒子,如果我滑动填充,
提前致谢
答案 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)
答案 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();
}