【问题标题】:WPF - RangeSlider wont display only integersWPF - RangeSlider 不会只显示整数
【发布时间】:2017-10-28 05:26:45
【问题描述】:

我正在做一个需要定价的项目。所以我使用了Extended WPF Toolkit 中的 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>

【问题讨论】:

    标签: c# wpf rangeslider


    【解决方案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"/>
    

    【讨论】:

    • 非常感谢,但我对 WPF 和 C# 还比较陌生,那么如何在 XAML 中实现呢?它表示名称空间中不存在名称“MyConverter”。
    【解决方案2】:

    RangeSlider 在其模板中有 2 个 Slider 控件。您可以使 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>
    

    【讨论】:

      猜你喜欢
      • 2014-03-25
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      • 2012-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多