WPF滑块和日期

时间:2010-09-22 05:03:24

标签: c# .net wpf slider

我想让滑块选择日期。例如,过去两天中的每小时。滑块底部的图例也应带有值。我怎么能这样做?

我使用自定义ValueConverter的日期总时数制作了数据上下文为DoubleCollection的滑块,并更改了工具提示。但是,当我更改值时,工具提示会显示实际值 - 日期总时数。我也不知道如何添加图例。

1 个答案:

答案 0 :(得分: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();
        }
    }

}