WPF - RangeSlider 不会只显示整数
WPF - RangeSlider wont display only integers
我正在做一个需要价格的项目。所以我使用了 Extended WPF Toolkit 到 select 价格范围内的 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>
你只需要一个转换器,就像这样...
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"/>
RangeSlider 的模板中有 2 个 Slider 控件。您可以将 Slider 设置为 select 仅整数。相关的 属性 是 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>
我正在做一个需要价格的项目。所以我使用了 Extended WPF Toolkit 到 select 价格范围内的 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>
你只需要一个转换器,就像这样...
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"/>
RangeSlider 的模板中有 2 个 Slider 控件。您可以将 Slider 设置为 select 仅整数。相关的 属性 是 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>