Свойство тега в столбце WPF DataGrid

Мне нужно сохранить строку внутри столбца Datagrid, которая отличается от заголовка.

Это необходимо, потому что я генерирую Datagrid динамически и хочу перевести заголовки столбцов при их генерации. Затем я связываю весь XAML с ContentControl.

Пока проблем нет... Но я хочу изменить порядок столбцов и изменить их размер, поэтому мне нужно найти их в лесу. Для этого мне нужен оригинальный (не переведенный) ColumnHeader.

На мой взгляд, свойство Tag столбца решит эту проблему, но нет:(

1 ответ

Решение

В WPF у вас есть практически неограниченные свойства "Tag" с помощью Attached Properties. Присоединенное свойство может быть установлено на любом DependencyObject, Хорошим примером такого прикрепленного свойства является Grid.Row, Поскольку вы можете определить их, у вас также есть возможность назвать их чем-то более значимым, чем Tag.

Пример кода для определения присоединенного свойства:

public static class SomeClass {

    public static readonly DependencyProperty TagProperty = DependencyProperty.RegisterAttached(
        "Tag",
        typeof(object),
        typeof(SomeClass),
        new FrameworkPropertyMetadata(null));

    public static object GetTag(DependencyObject dependencyObject) {
        return dependencyObject.GetValue(TagProperty);
    }

    public static void SetTag(DependencyObject dependencyObject, object value) {
        dependencyObject.SetValue(TagProperty, value);
    }

}

Использование:

<DataGridColumn SomeClass.Tag="abc" />
Другие вопросы по тегам