Нужна дополнительная помощь с привязкой нескольких CommandParameters с помощью MultiBinding

StackOverflow https://stackoverflow.com/questions/2165331

Вопрос

Мне нужен обработчик команд для ToggleButton, который может принимать несколько параметров, а именно свойство IsChecked указанного ToggleButton, а также постоянное значение, которое может быть строкой, байтом, int ... не имеет значения.

Я нашел этот замечательный вопрос по SO , перешел по ответной ссылке и прочитал о MultiBinding и IMultiValueConverter. Все шло очень гладко, пока мне не пришлось написать MultiBinding, когда я понял, что мне также нужно передать постоянное значение, и я не могу делать что-то вроде

родовое слово

Затем я наткнулся на еще один вопрос, на который ответил Кент Бугарт , а затем я начал думать о способах обойти это.

Один из возможных способов - не использовать MVVM и просто добавить свойство Tag в мой ToggleButton, и в этом случае моя привязка MultiBinding будет выглядеть следующим образом:

родовое слово

Кент сделал комментарий примерно так: «если вы используете MVVM, вы сможете обойти эту проблему». Однако я не уверен, что это вариант для меня, хотя я принял MVVM в качестве своего шаблона WPF для выбора необходимости .

Причина, по которой я говорю это, заключается в том, что у меня более одного ToggleButton в UserControl, и каждая из команд ToggleButtons должна вызывать одну и ту же функцию. Но поскольку это ToggleButtons, я не могу использовать свойство, привязанное к IsChecked в ViewModel, потому что я не знаю, какой из них был нажат последним. Думаю, я мог бы добавить еще одну частную собственность, чтобы отслеживать это, но это кажется немного глупым. Что касается константы, я, вероятно, мог бы избавиться от этого, если бы предложил идею отслеживания, но не уверен, что есть другой способ обойти это.

Есть ли здесь для меня хорошие предложения? :)

РЕДАКТИРОВАТЬ - хорошо, мне нужно обновить привязки, которые по-прежнему работают некорректно:

родовое слово

IsChecked работал, но не Tag. Я только что понял, что Тег - это строка ... ага. Теперь работает! Ключевым моментом было использование RelativeSource Self .

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

Решение

Как объяснялось выше, я разобрался.Мне пришлось использовать Self для RelativeSource, и это помогло.

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