问题描述
我想制作滑块来选择日期.例如,过去两天的每个小时.滑块底部应该有一个带有值的图例.我该怎么办?
I want to make slider to select dates. For example, every hour in last two days. Also slider should has a legend on the bottom with values. How could I do it?
我根据日期的总小时数制作了带有数据上下文的滑块作为 DoubleCollection,并使用自定义 ValueConverter 更改了工具提示.但是当我更改值时,工具提示会显示实际值 - 日期的总小时数.我也不知道如何添加图例.
I made slider with data context as DoubleCollection from total hours in date and changed tooltip using custom ValueConverter. But when I change value, tooltip shows real values - total hours in date. Also I have no idea how to add a legend.
推荐答案
这是一个工作示例.首先,我们创建一个从 0 到 48 舍入为整数值 (TickFrequency="1" IsSnapToTickEnabled="True"
) 的滑块,然后添加一个绑定到滑块值的 TextBlock
.
Here is a working example. First we create a slider from 0 to 48 rounded to integer values (TickFrequency="1" IsSnapToTickEnabled="True"
) then add a TextBlock
bound to the slider value.
ValueConverter
用于将0-48的值转换成日期.
A ValueConverter
is used to convert the 0-48 value into a date.
<Window x:Class="StackOverflow2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:StackOverflow2"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<local:HourToDateConverter x:Key="MyHourConverter"/>
</Window.Resources>
<StackPanel>
<Slider x:Name="MySlider" Minimum="0" Maximum="48" TickFrequency="1" IsSnapToTickEnabled="True"/>
<TextBlock Text="{Binding ElementName=MySlider, Path=Value, Converter={StaticResource MyHourConverter}}" HorizontalAlignment="Center"/>
</StackPanel>
</Window>
以及背后的代码:
using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;
namespace StackOverflow2
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
}
public class HourToDateConverter : 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);
return result;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
这篇关于WPF 滑块和日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!