Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обновление контрола 
:(
    Опции темы
andrey_pro
Дата 6.1.2009, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.9.2007

Репутация: нет
Всего: нет



Вот создал свой контрол, у контрола есть свойство Value типа DateTime
Следующим кодом применяю свой контрол в другой форме

          
Цитата

      <commonui:DateTimeControl EnableTime="True" Grid.Row="1" Grid.Column="1"
                        Style="{StaticResource ValidatedDateTimeControl}">
                    <commonui:DateTimeControl.Value>
                        <Binding Path="ObjectForEdit.AppearanceDate" UpdateSourceTrigger="PropertyChanged">
                            <Binding.ValidationRules>
                                <common:RequiredRule ErrorMessage="Поле не может быть пустым"/>
                            </Binding.ValidationRules>
                        </Binding>
                    </commonui:DateTimeControl.Value>
                </commonui:DateTimeControl>


В контроле можно менять дату (Value), при закрытии формы в котором содержится контрол значение Value остается прежним до изменений.

Вот код контрола

Цитата

        public static readonly DependencyProperty ValueProperty =
                DependencyProperty.Register(
                        "Value",
                        typeof(DateTime),
                        typeof(DateTimeControl),
                        new FrameworkPropertyMetadata(
                                (DateTime)DateTime.MinValue,
                                FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
                                new PropertyChangedCallback(OnValueChanged),
                                new CoerceValueCallback(CoerceValue)));

        public DateTime Value
        {
            get {return (DateTime)GetValue(ValueProperty);}
            set {SetValue(ValueProperty, value);}
        }

        void DatePicker_ValueChanged(object sender, RoutedPropertyChangedEventArgs<DateTime?> e)
        {
            Value = ((DatePicker)sender).Value;
        }

PM MAIL   Вверх
Partizan
Дата 6.1.2009, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



andrey_pro, более подробно опишите производимые действия, желаемый результат и результат, который получатся в итоге


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
andrey_pro
Дата 7.1.2009, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.9.2007

Репутация: нет
Всего: нет



У меня в форме стоит мой контрол, который отображает дату.
В коде XAML работаю с этим контролом, передаю и принимаю значение Value. вот так:

Цитата

<commonui:DateTimeControl.Value>
                        <Binding Path="ObjectForEdit.AppearanceDate" UpdateSourceTrigger="PropertyChanged">
                            <Binding.ValidationRules>
                                <common:RequiredRule ErrorMessage="Поле не может быть пустым"/>
                            </Binding.ValidationRules>
                        </Binding>
                    </commonui:DateTimeControl.Value>


При открытии формы значение Value передается и отображается правильно. Потом это значения я меняю в контроле и закрываю форму, значение обратно передается первоначальное!

До этого работал с обычным DatePicker контролом, все нормально было.

В своем контроле я видимо чтото забыл добисать..., в общем не обновлеется значение Value.
PM MAIL   Вверх
Partizan
Дата 7.1.2009, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



andrey_pro, 

а обработчик 

Код

        void DatePicker_ValueChanged(object sender, RoutedPropertyChangedEventArgs<DateTime?> e)
        {
            Value = ((DatePicker)sender).Value;
        }


точно вызывается?


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
andrey_pro
Дата 7.1.2009, 20:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.9.2007

Репутация: нет
Всего: нет



точно вызывается.

в следующие мотоды тоже заходит обработчик, и значение Value изменяется,
Цитата

private static void OnValueChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            
        }

        private static object CoerceValue(DependencyObject d, object value)
        {
           
        }


но при закрытии формы передается первоначальное значение.
Не пойму в чем дело
PM MAIL   Вверх
Partizan
Дата 7.1.2009, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 9
Всего: 67



andrey_pro, выложите проект...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
andrey_pro
Дата 8.1.2009, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 180
Регистрация: 21.9.2007

Репутация: нет
Всего: нет



в принципе я весь основной код выложил в первом посте, весь проект выкладывать не буду, он большой.

я думаю что чтото забыл описать в коде XAML, т.к. обратное значение не обновляется, хотя в самом контроле оно точно обновилось.
Цитата

<commonui:DateTimeControl EnableTime="True" Grid.Row="1" Grid.Column="1"
                        Style="{StaticResource ValidatedDateTimeControl}">
                    <commonui:DateTimeControl.Value>
                        <Binding Path="ObjectForEdit.AppearanceDate" UpdateSourceTrigger="PropertyChanged">
                            <Binding.ValidationRules>
                                <common:RequiredRule ErrorMessage="Поле не может быть пустым"/>
                            </Binding.ValidationRules>
                        </Binding>
                    </commonui:DateTimeControl.Value>
                </commonui:DateTimeControl>

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0491 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.