
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.147.140.23] |
![]() |
|
Сообщ.
#1
,
|
|
|
Итак, базовая реализация контрола:
![]() ![]() <UserControl x:Class="MyNamespace.DateTimePicker" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" > <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition/> <ColumnDefinition Width="Auto"/> <ColumnDefinition/> <ColumnDefinition Width="Auto"/> <ColumnDefinition/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <Label Grid.Column="0" Grid.Row="0" Content="год"/> <Label Grid.Column="0" Grid.Row="1" Content="час"/> <TextBox x:Name="_tbYear" Grid.Column="1" Grid.Row="0" TextChanged="CacheClearer"/> <TextBox x:Name="_tbHour" Grid.Column="1" Grid.Row="1" TextChanged="CacheClearer"/> <Label Grid.Column="2" Grid.Row="0" Content="месяц"/> <Label Grid.Column="2" Grid.Row="1" Content="мин"/> <TextBox x:Name="_tbMonth" Grid.Column="3" Grid.Row="0" TextChanged="CacheClearer"/> <TextBox x:Name="_tbMinute" Grid.Column="3" Grid.Row="1" TextChanged="CacheClearer"/> <Label Grid.Column="4" Grid.Row="0" Content="день"/> <Label Grid.Column="4" Grid.Row="1" Content="сек"/> <TextBox x:Name="_tbDay" Grid.Column="5" Grid.Row="0" TextChanged="CacheClearer"/> <TextBox x:Name="_tbSecond" Grid.Column="5" Grid.Row="1" TextChanged="CacheClearer"/> </Grid> </UserControl> ![]() ![]() public partial class DateTimePicker : UserControl { DateTime? _cache = null; public DateTimePicker() { InitializeComponent(); } public DateTime Value { get { if (_cache.HasValue) return _cache.Value; else { Int32 year = Int32.Parse(_tbYear.Text); Int32 month = Int32.Parse(_tbMonth.Text); Int32 day = Int32.Parse(_tbDay.Text); Int32 hour = Int32.Parse(_tbHour.Text); Int32 min = Int32.Parse(_tbMinute.Text); Int32 sec = Int32.Parse(_tbSecond.Text); try { DateTime val = new DateTime(year, month, day, hour, min, sec); _cache = val; return val; } catch (ArgumentOutOfRangeException ex) { _cache = null; throw new FormatException("Не верно задана дата или время", ex); } } } set { _cache = value; _tbYear.Text = value.Year.ToString(); _tbMonth.Text = value.Month.ToString(); _tbDay.Text = value.Day.ToString(); _tbHour.Text = value.Hour.ToString(); _tbMinute.Text = value.Minute.ToString(); _tbSecond.Text = value.Second.ToString(); } } private void CacheClearer(object sender, TextChangedEventArgs e) { _cache = null; } } } Фичи: 1. Данные может задать и прочитать юзер через польз. интерфейс 2. Данные может задать программист через свойство. Всё сразу покажется в польз. интерфейсе.. 3. При чтении через свойство используется кеширование данных. 4. It`s works! ![]() Недостатки: 1. Нет часиков 2. нет календарика 3. и вообще красивостей мало ![]() Если кто дароботает - выкладывайте сюда же. |