Вот рабочий пример. Сначала мы создаем ползунок от 0 до 48, округленный до целых значений (TickFrequency="1" IsSnapToTickEnabled="True"
), затем добавляем TextBlock
, связанный со значением ползунка.
A 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();
}
}
}