Как привязать DataGridColumnHeader к собственной модели представления ObservableCollection в WPFC#

Место общения программистов C#
Ответить
Anonymous
 Как привязать DataGridColumnHeader к собственной модели представления ObservableCollection в WPF

Сообщение Anonymous »

Я создал собственный DataGrid в WPF, куда добавил фильтрацию через всплывающее окно. Первоначально я управлял всеми взаимодействиями с помощью кода программной части, но недавно перешел на чистый подход MVVM. Все находится в общей библиотеке, и DataGrid имеет собственную внутреннюю модель представления (недоступную для клиентов).
Эта модель представления DataGridViewModel имеет свойство ObservableCollection. Каждая DataGridColumnHeaderViewModel имеет свойство IDataGridColumnHeaderFilterContent, где различные реализации используются для дат, строк или более сложных объектов для фильтрации.
Все работает хорошо, потому что я временно «дублировал» свойство IDataGridColumnHeaderFilterContent в DataGridViewModel, к которому я сейчас привязываюсь. По сути, это соответствует общему всплывающему окну для всех столбцов. Я не могу фильтровать 2 столбца одновременно (при этом всплывающее окно остается открытым).
Например, внутри всплывающего окна: В идеале мне нужна привязка типа Content="{Binding HeadersColumns[name].HeaderFilterContent}". но также иметь кнопку переключения и т. д., которая будет привязана к соответствующей DataGridColumnHeaderViewModel из ObservableCollection.
Я уже более двух дней безуспешно боролся с ChatGPT. Я считаю, что проблема связана со всплывающим окном (или даже с DataGridColumnHeader, который не является частью визуального дерева). В основном я пытался использовать прокси-сервер, конвертеры, менял DataContext в коде программной части, насколько я помню, но, вероятно, забыл большинство своих попыток, потому что запутался.
Есть ли у кого-нибудь идеи, как справиться с этой ситуацией?

Подробнее здесь: https://stackoverflow.com/questions/798 ... tion-in-wp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»