WPF滑动条和日期

3
我想制作一个日期选择器滑块,例如,在过去的两天内每小时一次。此外,滑块底部应该有带有值的图例。我该如何做?
我使用数据上下文作为日期中总小时数的DoubleCollection来创建滑块,并使用自定义ValueConverter更改了工具提示。但是当我更改值时,工具提示显示真实值-日期中的总小时数。而且我不知道如何添加图例。
1个回答

3
这是一个工作示例。首先,我们创建了一个滑块,范围从0到48,取整数值(TickFrequency="1" IsSnapToTickEnabled="True"),然后添加了一个绑定到滑块值的TextBlock
使用ValueConverter将0-48的值转换为日期。
<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();
        }
    }

}

你的回答解释了我已经知道的内容,尽管如此我还是将其标记为答案。 - Y.Yanavichus
你的问题是否还有什么尚未得到完全回答的地方? - Mart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接