Можно ли «обновить» привязки данных WPF - PullRequest
4 голосов
/ 18 марта 2009

У меня есть xaml TabControl, и на одной странице есть 3 RadioButton, каждый из которых связан с различным свойством в выбранном значении смежного ListView. После переключения между выбранными элементами в ListView мои переключатели, кажется, забывают, что они связаны и не обновляются.

Итак, наблюдая за этим в отладчике, когда я переключаюсь на новый выбранный элемент, я вижу, что не пользовательский код сначала проверяет значение во всех 3 свойствах, затем только первые два и, в конце концов, только первое. Однако, если я изменю вкладку и вернусь обратно, это, похоже, даст мне еще несколько вариантов использования.

Сама привязка довольно проста. Двухстороннее связывание свойства bool с IsChecked. Это 4 уровня глубины (Path = DataModel.Selected.A.B), но у меня есть другие вещи на той же глубине, которые отлично работают.

Люди слышали об этом и знали, что может происходить? Или, если привязка как-то забыта, есть ли способ явно напомнить xaml?

Ответы [ 3 ]

8 голосов
/ 18 марта 2009

Возможно вручную обновить привязки, как это:

TestCheckBox
    .GetBindingExpression(CheckBox.IsCheckedProperty)
    .UpdateTarget();

При этом я не уверен на 100%, что это исправит вашу основную проблему. У меня раньше не было такого рода проблем с привязками WPF, но у меня была пара странных проблем с управлением вкладками.

6 голосов
/ 18 марта 2009

Это, по-видимому, несколько известная проблема:

http://social.msdn.microsoft.com/forums/en-US/wpf/thread/8eb8280a-19c4-4502-8260-f74633a9e2f2/

Короче говоря, RadioButton (через .Net 3.5sp1) каким-то образом уничтожает привязки других RadioButton, когда проверяется при попытке снять отметку с любых других кнопок. Простое исправление (читай: hack) - назначить каждой радиокнопке другое GroupName, а затем они не пытаются связываться друг с другом

1 голос
/ 18 марта 2009

Другим способом решения этой проблемы является подделка списка свойств в ListBox и использование радиокнопки для шаблона ListBoxItem.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...