AvuMxl Ответов: 1

Как установить "ischecked" для вложенных кнопок переключения (WPF, C#)


Всем привет,
Я довольно новичок в использовании WPF, и я сразу же прыгнул и использовал шаблон MVVM. У меня есть проект, где мне нужно установить IsChecked = true для вложенной кнопки переключения, то есть кнопки переключения внутри кнопки переключения.
Предыстория: я делаю приложение для отображения организационной структуры, поэтому во время выполнения создаются кнопки переключения. Я использовал кнопки переключения, потому что они хорошо показывают иерархию, плюс мне нужно было состояние - когда кнопка проверена, измените цвет и добавьте куда-нибудь в список (игнорируйте эту часть). Это прекрасно работает, когда я нажимаю на родительский узел, но я хочу, чтобы дочерние узлы внутри этого родительского узла также были изменены.

N. B. В моем XAML есть только один togglebutton

P.S. "базовая идея" для этого проекта взята из Иерархия Приложений-SharePoint[^]

Что я уже пробовал:

&ЛТ;выключатель х:имя="btnNodes" шаблон="{расширение StaticResource ctpDetailButton}" команда="{привязки SelectedCommand}" этот флажок установлен="{привязки изменили реализацию,режим=с двусторонним движением,UpdateSourceTrigger=явные}"&ГТ;
ViewModel: у меня есть свойство "IsSelected", и я установил его в true на PropertyChanged " (точно так же, как это сделано в ссылке. Затем я перебираю дочерние узлы, чтобы установить isSelected в true. Это работает, но не меняет цвет фона для кнопок переключения внутри "родительской" кнопки переключения.

1 Ответов

Рейтинг:
2

#realJSOP

Привязка для внутренней кнопки IsSelected свойство просто должно ссылаться на значение его родительского элемента управления IsSelected собственность, что-то вроде этого:

"IsSelected={Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ToggleButton}}}"


AvuMxl

Спасибо за быстрый ответ. У меня есть только одна кнопка переключения в моем представлении...остальные создаются во время выполнения в соответствии со свойством "дети" в моем viewmodel. Таким образом, добавление этих строк, как вы предложили, не имело никакого значения, только родитель получает изменение фона...

#realJSOP

Затем улучшите свой вопрос. Когда вы говорите "кнопка переключения в кнопке переключения", я предполагаю, что вы устанавливаете свойство содержимого кнопок переключения на другую кнопку переключения. Если это не то, что вы делаете, то то, что я предложил, конечно, не сработает.

AvuMxl

Хорошо спасибо