На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: maxim84_
  
> Контрол WPF: DateTimePicker
    Итак, базовая реализация контрола:

    ExpandedWrap disabled
      <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>



    ExpandedWrap disabled
          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! :rolleyes:

    Недостатки:
    1. Нет часиков
    2. нет календарика
    3. и вообще красивостей мало :)

    Если кто дароботает - выкладывайте сюда же.
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0167 ]   [ 16 queries used ]   [ Generated: 6.05.24, 16:33 GMT ]