2017-02-05 18 views
0

Мне нужно изменить Datagrid columnsvisibility от context menu внутри заголовка. Все видимости столбцов были установлены внутри кода XAML по умолчанию.Показать/скрыть все столбцы datagrid из datacontext wpf

<DataGridTextColumn Visibility="Visible" Binding="{Binding Story}" Header="Story" /> 

Я не хочу связывать видимость каждого столбца с ViewModel. Я хочу, чтобы все видимые столбцы были видимыми, если все столбцы были скрыты, и наоборот. все из кода XAML, не связывая видимость внутри кода столбца.

+0

Похоже, вам нужно создать класс, который реализует IValueConverter, который берет вашу модель и возвращает соответствующее значение видимости. – Gavin

+0

Как вы должны показывать контекстное меню, если весь столбец скрыт? – mm8

+0

@ mm8 Я добавил пустой столбец в качестве временного решения и удалил его при показе одного или нескольких столбцов. Я достиг того, что хотел, используя событие click, перейдя по всем столбцам и установив их видимость. но я ищу решение, использующее только код XAML. (не для добавления пустого столбца), поскольку это не подход MVVM. – IBRA

ответ

1

Я добавил пустой столбец в качестве временного решения и удалил его при отображении одного или нескольких столбцов, я достиг того, что хотел, используя событие click, путем циклического перехода по всем столбцам и установки их видимости. но я ищу решение, использующее только код XAML.

MVVM is не об исключении код. Речь идет о разделении проблем. И XAML - это разметка. Совершенно прекрасно добавлять код для скрытия/отображения столбцов DataGrid в самом элементе управления или в представлении.