blob: 74859f5a848fea72c9397893cc8e033d49af056f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
using MaterialDesignThemes.Wpf;
using System.Globalization;
using System.Linq;
using System.Windows.Controls;
namespace MaterialDesignColors.WpfExample
{
/// <summary>
/// Interaction logic for Pickers.xaml
/// </summary>
public partial class Pickers : UserControl
{
public Pickers()
{
InitializeComponent();
FutureDatePicker.BlackoutDates.AddDatesInPast();
LoadLocales();
LocaleCombo.SelectionChanged += LocaleCombo_SelectionChanged;
LocaleCombo.SelectedItem = "fr-CA";
}
private void LocaleCombo_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
try {
var lang = System.Windows.Markup.XmlLanguage.GetLanguage((string) LocaleCombo.SelectedItem);
LocaleDatePicker.Language = lang;
LocaleDatePickerRTL.Language = lang;
}
catch {
LocaleCombo.SelectedItem = "fr-CA";
}
//HACK: The calendar only refresh when we change the date
LocaleDatePicker.DisplayDate = LocaleDatePicker.DisplayDate.AddDays(1);
LocaleDatePicker.DisplayDate = LocaleDatePicker.DisplayDate.AddDays(-1);
LocaleDatePickerRTL.DisplayDate = LocaleDatePicker.DisplayDate.AddDays(1);
LocaleDatePickerRTL.DisplayDate = LocaleDatePicker.DisplayDate.AddDays(-1);
}
private void LoadLocales()
{
foreach (var ci in CultureInfo.GetCultures(CultureTypes.AllCultures)
.Where(ci => ci.Calendar is GregorianCalendar)
.OrderBy(ci => ci.Name))
{
LocaleCombo.Items.Add(ci.Name);
}
}
public void CalendarDialogOpenedEventHandler(object sender, DialogOpenedEventArgs eventArgs)
{
Calendar.SelectedDate = ((PickersViewModel)DataContext).Date;
}
public void CalendarDialogClosingEventHandler(object sender, DialogClosingEventArgs eventArgs)
{
if (!Equals(eventArgs.Parameter, "1")) return;
if (!Calendar.SelectedDate.HasValue)
{
eventArgs.Cancel();
return;
}
((PickersViewModel)DataContext).Date = Calendar.SelectedDate.Value;
}
public void ClockDialogOpenedEventHandler(object sender, DialogOpenedEventArgs eventArgs)
{
Clock.Time = ((PickersViewModel) DataContext).Time;
}
public void ClockDialogClosingEventHandler(object sender, DialogClosingEventArgs eventArgs)
{
if (Equals(eventArgs.Parameter, "1"))
((PickersViewModel)DataContext).Time = Clock.Time;
}
}
}
|