Вопрос

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

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

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

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

Это было полезно?

Решение 2

Похоже, это известная проблема:

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

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top