Есть ли способ скрыть данный столбец на основе привязки. Я попытался установить свойство видимости в DataGridTextColumn (используя правильный конвертер), но это не работает. Если я устанавливаю значение напрямую (не через привязку), он работает. То есть видимость столбца - все или ничего не связано с datagrid?WPF Datagrid - установить видимость столбца на строку
ответ
Все, что вам действительно нужно сделать, это добавить:
, а затем используются следующие в столбцах:
<DataGridTextColumn CellStyle="{StaticResource vStyle}"/>
Посмотрите на этот пост, проблема объясняется
Binding in a WPF data grid text column
и здесь
http://blogs.msdn.com/b/jaimer/archive/2008/11/22/forwarding-the-datagrid-s-datacontext-to-its-columns.aspx
Цитирование JaredPar из первого звена
«По существу проблема заключается в том, что DataGridTextColumn не имеет родителя, из которого чтобы наследовать привязку, потому что она не является частью логического или визуального дерева. Вы должны настроить контекст наследования, чтобы получить доступ к информации привязки «
Временное решение для того, чтобы получить эту работу ..
public class DataGridContextHelper
{
static DataGridContextHelper()
{
DependencyProperty dp = FrameworkElement.DataContextProperty.AddOwner(typeof(DataGridColumn));
FrameworkElement.DataContextProperty.OverrideMetadata(typeof(DataGrid),
new FrameworkPropertyMetadata
(null, FrameworkPropertyMetadataOptions.Inherits,
new PropertyChangedCallback(OnDataContextChanged)));
}
public static void OnDataContextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
DataGrid grid = d as DataGrid;
if (grid != null)
{
foreach (DataGridColumn col in grid.Columns)
{
col.SetValue(FrameworkElement.DataContextProperty, e.NewValue);
}
}
}
}
public partial class App : Application
{
static DataGridContextHelper dc = new DataGridContextHelper();
}
<DataGrid x:Name="c_dataGrid" AutoGenerateColumns="False" DataContext="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=SelectedItem}">
<DataGrid.Columns>
<DataGridTextColumn Visibility="{Binding Path=(FrameworkElement.DataContext), RelativeSource={x:Static RelativeSource.Self}, Converter={StaticResource HideColumnAConverter}}" />
</DataGrid.Columns>
</DataGrid>
object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
{
return Visibility.Visible;
}
// Whatever you're binding against
TestClass testClass = value as TestClass;
return testClass.ColumnAVisibility;
}
Это работает для всего столбца ... то, что я ищу, это индивидуальный контроль строки. Например, строка 1 имеет 5 столбцов, а строка 2 имеет 4 столбца, потому что одна из них скрыта. – AKoran
Обновлен мой пример, надеюсь, это будет сделано :) Добавлен DataContext = "{Binding RelativeSource = {x: Static RelativeSource.Self}, Path = SelectedItem}" для DataGrid и конвертера для каждого столбца. –
Или, может быть, лучший способ сделать это без конвертера, если вы привязаны к свойству видимости.
- 1. WPF - видимость подсказки столбца DataGrid на основе длины данных столбца
- 2. Установить видимость столбца datagrid как свернутый в WPF
- 3. Как установить положение столбца в datagrid wpf
- 4. Как связать видимость столбца datagrid в пользовательском элементе управления wpf?
- 5. Вложенная видимость столбца datagrid на основе содержимого его внутреннего datagrid
- 6. Отключить видимость столбца
- 7. WPF Datagrid RowDetailsTimplate видимость, связанная с свойством
- 8. wpf datagrid значение столбца заголовка столбца фильтра
- 9. WPF DataGrid - Скрытие столбца с помощью CheckBox
- 10. WPF DataGrid: Ресурс за строку?
- 11. Как установить строку Цвет фона для WPF DataGrid Programmatically (WPF & C#) на основе значения в DataGrid
- 12. WPF DataGrid, вычеркнуть строку
- 13. WPF DataGrid выделить целую строку
- 14. DataGrid установить ширину столбца
- 15. Проверка правильности столбца DataGrid (WPF)
- 16. Запретить изменение столбца Datagrid WPF
- 17. WPF Пользовательского заголовка столбца DataGrid
- 18. WPF Datagrid Ширина столбца CodeBehind
- 19. WPF Toolkit DataGrid как установить столбец столбца SelectionBackground?
- 20. Как переключить видимость столбца таблицы WPF
- 21. WPF DataGrid: привязка DataGridColumn видимость к ContextMenu MenuItems IsChecked (MVVM)
- 22. установить максимальную ширину отображения для столбца в WPF datagrid
- 23. Как установить ширину столбца в datagrid на *
- 24. wpf datagridcell видимость элемента
- 25. WPF Установка ширины определенного столбца в DataGrid
- 26. Wpf DataGrid добавляет новую строку
- 27. WPF DataGrid Скрыть выбранную строку?
- 28. Wpf DataGrid Добавить новую строку
- 29. WPF делится настройкой столбца DataGrid (шаблон? Style?)
- 30. WPF: привязка заголовка столбца DataGrid к ViewModel
Хорошее мышление :) –