Привязка Видимое свойство DataGridColumn в WPF DataGrid
Я не могу связать свойство Visible столбца данных WPF с логическим значением.
Мое обязательное выражение:
{Binding Path=DataContext.IsThisColumnVisible, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Window},Converter={StaticResource vc}}
Я проверил, что конвертер работает (bool to enum видимости) и находится в области видимости.
Если я использую то же выражение для заголовка столбца, заголовок отображает "ложь", как и ожидалось.
Видимый является свойством зависимости, поэтому должен быть привязываемым.
Кто-нибудь видит, что я делаю не так? Или кто-то еще мог связать видимое свойство.
С Уважением,
Matt
4 ответа
Я решил это.
DataGridCOlumn не является элементом структуры, поэтому вызов FindAncestor не удался (DataGridColumn не является частью визуального дерева)
Нужно установить свойство source выражения привязки для staticresource, и оно работает нормально.
Трудно сказать по такому небольшому количеству вашего кода. Что находится в окне вывода Visual Studio (в разделе "Отладка")? Это часто даст вам ключ к решению проблемы.
Я искал то же самое и нашел отличный способ сделать это в статье о перенаправлении datacontext в столбцы.
Если вы можете связать из кода, вы можете использовать
BindingOperations.SetBinding(DatagridColumInstance,
DatagridColum.VisibilityProperty,
myNewBindDef);