AvuMxl Ответов: 2

Как я могу привязать свойства selectedIndex из combobx на выключатель с#


Я работаю над заявкой для компании - не могу раскрыть полную информацию о проекте, но постараюсь быть достаточно описательным. У меня есть проект WPF (C#), я использую MVVM , где пользователь открывает приложение, делает выбор в выпадающем списке, проверяет кнопки переключения и сохраняет эту ссылку нажатием кнопки.
Для вашего понимания приведу пример команды игроков. В Combobox есть команды A, B, C, а кнопки переключения - это имена игроков. Пользователь выбирает команду A, выбирает игроков Джона и Дэйва для этой команды и нажимает кнопку «Сохранить» - это сохраняется в XML-файл. Когда кнопка Togglebutton отмечена, она меняет цвет. Теперь, когда пользователь снова открывает приложение, выбирает команду A из поля со списком, игроки, которые уже были выбраны, должны отображаться как отмеченные - изменить цвет. Как я могу добиться этого с помощью MVVM? Сторона ViewModel работает нормально - я могу получить имена игроков, которые связаны с текущим выбором Combobox, но я не знаю, как привязать это к Togglebutton.
P.S. Эта ссылка http://www.dotnetlead.com/wpf-organization-chart/application-and-source-code вот пример, из которого я это взял, он поможет вам понять, о чем я говорю - особенно о выборе Togglebutton. У меня нет нескольких кнопок переключения в моем .xaml, но только одна...остальные создаются во время выполнения в зависимости от списка игроков. Пожалуйста, перейдите по ссылке, чтобы понять, что я имею в виду здесь...

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

На данный момент мне просто нужен теоретический ответ, предполагающий, что я могу попробовать-не обязательно должен быть код. Я знаю, что это то, что я должен сделать в XAML, потому что, как я уже сказал, У меня есть логика в виртуальной машине, чтобы связать игроков с командой...проблема в том, чтобы установить Togglebutton в checked, фактически не нажимая на него...

2 Ответов

Рейтинг:
1

Graeme_Grant

дать выпадающем списке имя нажмите на выключатель:

<ToggleButton Content={Binding ElementName=ComboBoxName, Path=SelectedIndex}"/>
или к любому другому свойству, которое нуждается в привязке.


Рейтинг:
0

AvuMxl

Спасибо за быстрый ответ. Вот как сейчас выглядит мой Togglebutton. Я уже привязываю его к чему-то, так можно ли привязать его к чему-то еще?


&ЛТ;выключатель х:имя="btnPlayers" шаблон="{расширение StaticResource ctpDetailButton}" HorizontalContentAlignment="центр" VerticalContentAlignment="Центр" команда="{привязки SelectedCommand, режим=с двусторонним движением}" этот флажок установлен="{привязки этот флажок установлен,режим=с двусторонним движением,UpdateSourceTrigger=явные}" &ГТ;

**здесь вы можете игнорировать другие свойства. Другое дело, что combobox находится в другом UserControl-он находится в MainWindow. xaml


Graeme_Grant

Какова цель привязки элемента управления ComboBox.SelectedIndex к ToggleButton? Тогда я смогу дать лучший ответ.

AvuMxl

Требование состоит в том, что при выборе элемента в поле combobox должна быть проверена кнопка togglebutton с именами игроков, связанных с элементом combobox (командой). Поэтому я подумал, что связывание выбора combobox - это то, что мне здесь нужно, но принимается и другое решение...Чего я не могу сделать, так это нажать кнопку, чтобы показать эту ссылку, это должно произойти "автоматически" после того, как пользователь выберет команду из выпадающего списка. Я надеюсь, что это яснее...

Graeme_Grant

Вы привязываетесь к IsChecked в модели (ViewModel, Model или code-behind). Так что у вас есть два варианта:
1. привязать выбранный индекс к модели и позволить модели обрабатывать логику; или
2. Используйте MultiValueConverter[^] и пусть это делает логика.

AvuMxl

Я думаю, что пойду с вариантом 1 - я никогда раньше не использовал 2.
В моей виртуальной машине у меня уже есть логика, которая читает xml-файл, ищет игроков, связанных с командой, и сейчас я показываю их в Messagebox только для тестирования. Итак, когда вы говорите, что я должен привязать SelectedIndex, вы имеете в виду привязать метод, в котором у меня есть эта логика, к selectedIndex? если да, то как мне сделать ссылку на Togglebutton тогда, потому что это то, что осталось сейчас?

Graeme_Grant

Персонализация свойства selectedIndex свойство в вашей виртуальной машине. Затем, когда свойство установлено, примените свою логику. Это также дает вам контроль над выпадающим списком, если вам нужно вручную установить / очистить выделение. SelectedIndex = -1-это удаление выделения.

AvuMxl

Спасибо, я это сделал, но он все еще не "общается" с Togglebutton

Graeme_Grant

Этого не должно быть. Предполагается, что он взаимодействует с виртуальной машиной. Виртуальная машина обрабатывает логику и привязку [vm].Свойство ischecked переговоры на выключатель.

AvuMxl

Итак, я должен привязать SelectedIndex к свойству IsChecked в виртуальной машине?

Graeme_Grant

Нет, к новому свойству SelectedIndex на виртуальной машине. Затем сеттер передал обновление вашей логике состояния.