| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > WPF и Silverlight > Binding |
| Автор: Compositum 6.5.2009, 21:38 | ||||||
Создал класс:
Использую экземпляр этого класса в качестве поля класса, производного от Window:
В окне размещаю CheckBox, который связываю с полем IsChecked. Хочу реализовать двустороннюю связь: т.е. чтобы изменение значения CheckBox оказывало действие на поле IsChecked и наоборот: программное изменение поля IsChecked влияло и на значение CheckBox. Код:
Однако получаю лишь одностороннюю связь - при изменении значения объекта CheckBox значение поля IsChecked меняется. но ежели изменить значение IsChecked программно, то значение объекта CheckBox автоматом не изменится в соответствии с произведенным изменением. Видать чего-то я недопонимаю... Как реализовать двустороннюю связь? |
| Автор: -Mikle- 6.5.2009, 22:00 |
| Ну а как по твоему Binding должен узнать об изменении поля myClass? Ему нужно предоставить один из поддерживаемых им вариантов: INotifyPropertyChanged, либо (рекомендую) DependencyProperty. |
| Автор: Partizan 6.5.2009, 22:11 | ||
Судя по всему изучаете по книжке Петцольда Applications = Markup + Code.... Имхо не очень удачная книжка... WPF Unleashed by Adam Nathan понравилась больше... |
| Автор: Compositum 6.5.2009, 22:15 | ||||||
она самая. есть еще и Мак-Дональд, но Петцольд мне как-то более понятен зачастую. Хотя опечаток хватает и там и там... Добавлено через 5 минут и 8 секунд
ДепенденсиПроперти, как я понял из прочтенного у Петцольда, удобно юзать в классах, посредством которых реализуется UI. А мне нужно сие выполнить применительно к классу, который является образом некой сущности (не визуальной). Посему, видимо, INotifyPropertyChanged - единственный вариант. Ранее я его не юзал, щас посмотрю инфу на эту тему. сиба. |
| Автор: -Mikle- 7.5.2009, 20:05 |
| Ну не знаю, о чем там Петзольд писал... Считаю что если удобно, то юзай. DependencyObject не далеко от object стоит: DependencyObject : DispatcherObject : Object так что я не понимаю какая связь с UI у него. Да и к тому же, ты ведь с CheckBox'ом работаешь, то есть свойство класса связано с UI. |
| Автор: WolfTheGrey 8.5.2009, 03:54 | ||
| а еще можно при создании нового экземпляра класса ему в конструктор вкладывать такую строчку: Application.Current.MainWindow тогда через экземпляр класса можно будет обратиться к классу родителю.
да и не трожте Петзольда. |