XAML滑块控件的问题

XAML滑块控件的问题,xaml,slider,Xaml,Slider,我将滑块控件的值绑定到textblock。由于某种原因,它工作不稳定。例如,如果我慢慢移动拇指,我会得到正确的增量,但当我快速移动时,它只会显示一些随机的东西 这是我在C#中的值更改事件: 计数器是一个双类型变量 time是一个日期时间变量 而tbTimeDispPopup是一个文本块 当我不计算时间时,跟踪工作正常。我试图将时间设定为滑块值,这意味着滑块的最小值将是12:00 am,滑块的最大值将是第二天的12:00 am 这是我的项目的链接,如果有人能看一下的话。 请告知。 谢谢大家。

我将滑块控件的值绑定到textblock。由于某种原因,它工作不稳定。例如,如果我慢慢移动拇指,我会得到正确的增量,但当我快速移动时,它只会显示一些随机的东西

这是我在C#中的值更改事件:

计数器
是一个双类型变量

time
是一个日期时间变量

tbTimeDispPopup
是一个文本块

当我不计算时间时,跟踪工作正常。我试图将时间设定为滑块值,这意味着滑块的最小值将是12:00 am,滑块的最大值将是第二天的12:00 am

这是我的项目的链接,如果有人能看一下的话。

请告知。
谢谢大家。

我已经查看了您的项目,如果我理解正确,您希望将文本框文本绑定到滑块值。为此,我建议您执行以下操作:将文本框文本绑定到滑块值,根据需要设置最小最大值,并使用转换器正确显示日期时间,如下所示

  <Grid Background="DarkSlateGray">
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
    </Grid.RowDefinitions>
    <TextBlock x:Name="TbTimeDispPopup"
               Grid.Row="0"
               HorizontalAlignment="Stretch"
               VerticalAlignment="Center"
               FontSize="30"
               Text="{Binding ElementName=SliderShiftStart, Path=Value, Converter={StaticResource ValueToHoursConverter}}"
               TextWrapping="Wrap" />
    <Slider x:Name="SliderShiftStart"
            Grid.Row="1"
            MinHeight="0"
            HorizontalAlignment="Stretch"
            VerticalAlignment="Center"
            IsSnapToTickEnabled="True"
            Maximum="48"
            TickFrequency="1"/>
</Grid>

希望这有帮助。

谢谢纳扎尔。在我脑海中的某个地方,我知道转换器可以满足需要,但作为一名新手,我发现从哪里开始实现转换器很困难。我在看一些代码片段,哦,我的天啊,工作起来很有魅力。非常感谢纳扎尔。嘿,纳扎尔:你能告诉我我的设置出了什么问题吗?嗨,纳扎尔,你用什么来划分双数值的2d?你的设置不确定。关于2d。我除以2,因为设置了最大值48,所以滑块的1个刻度表示除以后的30分钟。如果需要更多详细信息,可以设置另一个最大值并使用另一个分隔符
  <Grid Background="DarkSlateGray">
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition />
    </Grid.RowDefinitions>
    <TextBlock x:Name="TbTimeDispPopup"
               Grid.Row="0"
               HorizontalAlignment="Stretch"
               VerticalAlignment="Center"
               FontSize="30"
               Text="{Binding ElementName=SliderShiftStart, Path=Value, Converter={StaticResource ValueToHoursConverter}}"
               TextWrapping="Wrap" />
    <Slider x:Name="SliderShiftStart"
            Grid.Row="1"
            MinHeight="0"
            HorizontalAlignment="Stretch"
            VerticalAlignment="Center"
            IsSnapToTickEnabled="True"
            Maximum="48"
            TickFrequency="1"/>
</Grid>
public class ValueToHoursConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        object result = DependencyProperty.UnsetValue;

        if (value is double)
        {
            result = DateTime.Now.Date.AddHours((double)value/2d);
        }

        return result;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}