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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Mode=TwoWay binding 
V
    Опции темы
sameness
Дата 26.5.2011, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени..
Подскажите пожалуйста, почему не работает binding с параметром Mode=TwoWay:
Есть UserControl наследованый от Grid'а:
Код

    public partial class ContainerControl : Grid
    {
        public static readonly DependencyProperty TestProperty =
            DependencyProperty.Register("Test", typeof(bool), typeof(ContainerControl));

        [DefaultValue(false)]
        public bool Test
        {
            get { return (bool)this.GetValue(TestProperty); }
            set 
            {
                if ((bool)this.GetValue(TestProperty) != value)
                {
                    this.SetValue(TestProperty, value);
                    OnPropertyChanged("Test", value);
                }
            }
        }
      .
      .
   }


есть MainWindow с кодом:
Код

.
.
<ribbon:RibbonCheckBox x:Name="TestCheckBox" Label="TestCheckBox" IsChecked="{Binding Test, ElementName=Container, Mode=TwoWay}" />
.
.
<app:ContainerControl x:Name="Container" Grid.Row="1"/>
.
.

binding не работает ни в одну сторону, меняю из кода значение свойства Test, CheckBox не устанавливается, устанавливаю CheckBox с GUI, значение свойства не меняется.. меняя значение OwnerType при регистрации DependencyProperty добивался что работы связки в одну сторону, но ни разу не получилось в обе стороны...

PM MAIL   Вверх
-Mikle-
Дата 27.5.2011, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

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



Вероятнее всего, Binding не может найти ElementName=Container, либо глючит риббон. Для проверки, попробуй объявить простой CheckBox с таким же биндингом сразу после ContainerControl.

PS: вот такое объявление свойства вполне рабочее для двусторонней привязки:
Код

       public static readonly DependencyProperty TestProperty =
            DependencyProperty.Register("Test", typeof(bool), typeof(ContainerControl));

        public bool Test
        {
            get { return (bool)this.GetValue(TestProperty); }
            set { this.SetValue(TestProperty, value); }
        }



--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
jonie
Дата 27.5.2011, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



можно посмотреть в окно output - там в случае ошибок binding-а пишется трассировочная информация


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
sameness
Дата 27.5.2011, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Прошу прощения, все работает)
проверял брейкпоинтами, в случае DependencyProperty выполнение не останавливалось в точке
Код

            set 
            {
                if ((bool)this.GetValue(TestProperty) != value)
                {
                    this.SetValue(TestProperty, value);
                    OnPropertyChanged("Test", value);
                }
            }

где я и ставил брейкпоинт. Когда вывел значение свойства на экран, оказалось что оно устанавливается в обоих случаях, но в одном из, минуя выполнение метода OnPropertyChanged("Test", value);
с уведомлениями об изменении свойства разобрался по ссылке
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




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


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

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