有没有办法在 windows phone 8 滑块中添加步骤我希望我的滑块只接受值 0、1、2、3、4。
此外,我希望模板是离散的,在滑块上的每个值中显示一条细线,就像 Windows phone 8 设置中的轻松访问一样。
滑块应该像 4 个长方形薄盒子,如果我滑动就会填满,
提前致谢
有没有办法在 windows phone 8 滑块中添加步骤我希望我的滑块只接受值 0、1、2、3、4。
此外,我希望模板是离散的,在滑块上的每个值中显示一条细线,就像 Windows phone 8 设置中的轻松访问一样。
滑块应该像 4 个长方形薄盒子,如果我滑动就会填满,
提前致谢
您可以尝试注册一个附加属性来为您进行数学舍入,而不是使用第三方控件。作为一个非常快速和肮脏的例子(这可能是需要发生的事情),你可以创建这样的东西。
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 中,除了快速查看之外,这在很大程度上未经测试。
<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();
}