DevExpress
[DevExpress/WPF] DateEdit 기간으로 표시하기 (-10 ~ 10)
kjun.kr
2022. 9. 2. 00:27
728x90
기간으로 표시하기위한 Converter 추가
DateToDaysConverter.cs
using System;
using System.Globalization;
using System.Windows.Data;
namespace Wpf.DevGridTest
{
internal class DateToDaysConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (System.Convert.ToDateTime(value) - DateTime.Now).Days;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
Resource 에 Converter 정의 및 DateEdit 에 적용
MainWindow.xaml
xmlns:local="clr-namespace:Wpf.DevGridTest"
<Window.Resources>
<local:DateToDaysConverter x:Key="DateToDaysConverter" />
</Window.Resources>
<StackPanel Grid.Row="2" Orientation="Horizontal">
<dxe:DateEdit
Width="90"
Height="30"
VerticalAlignment="Center"
HorizontalContentAlignment="Right"
DisplayTextConverter="{StaticResource DateToDaysConverter}"
EditValue="{Binding FromDate}" />
<Label
VerticalAlignment="Center"
HorizontalContentAlignment="Right"
Content="~" />
<dxe:DateEdit
Width="90"
Height="30"
VerticalAlignment="Center"
HorizontalContentAlignment="Right"
DisplayTextConverter="{StaticResource DateToDaysConverter}"
EditValue="{Binding ToDate}" />
</StackPanel>
MainViewModel.cs
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Drawing;
using System.Runtime.CompilerServices;
namespace Wpf.DevGridTest
{
public class MainViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged([CallerMemberName] string name = "") => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
private DateTime fromDate;
public DateTime FromDate
{
get => this.fromDate;
set
{
this.fromDate = value;
OnPropertyChanged();
}
}
private DateTime toDate;
public DateTime ToDate
{
get => this.toDate;
set
{
this.toDate = value;
OnPropertyChanged();
}
}
public MainViewModel()
{
FromDate = DateTime.Now.AddDays(-10);
ToDate = DateTime.Now;
}
}
}
결과
728x90