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