2017-05-27 81 views
1

我正在一个项目,我需要有价格。所以我使用Extended WPF Toolkit的RangeSlider来选择价格范围。WPF - RangeSlider不会显示只有整数

我也做了2个文本块,显示较低和较高的值。但问题是它只显示带小数的数字。我想要整数。

<wpfTool:RangeSlider Name="rangeSlider" Grid.Row="4" LowerValue="300" Minimum="300" Maximum="2300" HigherValue="2300" LowerValueChanged="RangeSlider_LowerValueChanged"/> 
     <WrapPanel Orientation="Horizontal" Margin="0,0,26.983,0"> 
      <TextBlock Text="{Binding LowerValue, ElementName=rangeSlider, UpdateSourceTrigger=PropertyChanged}"/> 
      <TextBlock Width="50"/> 
      <TextBlock Text="{Binding HigherValue, ElementName=rangeSlider, UpdateSourceTrigger=PropertyChanged}" Width="44"/> 
      <TextBlock Text="€" Width="11"/> 
     </WrapPanel> 

回答

1

RangeSlider有2个滑块控制器在它的模板中。您可以让Slider只选择整数。相关财产是IsSnapToTickEnabled。要更改属性嵌套滑块添加样式到RangeSlider资源:

<wpfTool:RangeSlider Name="rangeSlider" Grid.Row="4" 
        LowerValue="300" Minimum="300" Maximum="2300" HigherValue="2300" 
        LowerValueChanged="RangeSlider_LowerValueChanged"/> 
    <wpfTool:RangeSlider.Resources> 
     <Style TargetType="Slider"> 
      <Setter Property="IsSnapToTickEnabled" Value="True"/> 
     </Style> 
    </wpfTool:RangeSlider.Resources> 
</wpfTool:RangeSlider> 
+0

非常感谢你!有效。 – Yanketz

1

你只需要一个转换器,这样的...

internal class MyConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     if(value is double) 
     { 
      return ((double)value).ToString("f0"); 
     } 
     return ""; 
    } 
    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

在XAML这样的声明...

<Window.Resources> 
    <local:MyConverter x:Key="MyConverter"/> 
</Window.Resources> 

而在XAML中引用这样的...

 <TextBlock Text="{Binding HigherValue, Converter={StaticResource MyConverter}, ElementName=rangeSlider, UpdateSourceTrigger=PropertyChanged}" Width="44"/> 
+0

非常感谢你,但我还挺新的WPF和C#,所以我怎么在XAML实现这一点?它说名称空间中不存在名称“MyConverter”。 – Yanketz