WPF datagrid привязка текста заголовка

Большое усиление, которое можно получить от свойства (частный, общедоступный...) - то, что оно может произвести расчетное значение по сравнению с установленным значением. Например

class Person { 
  private DateTime _birthday;
  private int _age { get { return (DateTime.Now - _birthday).TotalYears; }
}

преимущество этого шаблона состоит в том, что только одно значение должно быть обновлено для N другие значения для отражения изменения. Это верно для свойств независимо от доступности. Нет никакого определенного преимущества частной собственности по сравнению с нечастной собственностью (кроме него являющийся частным, конечно)

27
задан Berryl 13 November 2009 в 16:45
поделиться

2 ответа

** РЕДАКТИРОВАТЬ: -

Вы можете стилизовать DataGridColumnHeader и выполнить некоторые фанковые привязки. попробуйте здесь и загрузите ColumnHeaderBindings.zip, у него есть небольшой тестовый проект, это вроде взлома, но он работает

** End Edit

Binding в столбце происходит из расчета на строку , столбец не является частью визуального дерева, привязка применяется к каждому элементу в сетке, из исходного кода сетки вы можете видеть, что свойство Binding содержит эти комментарии

    /// <summary>
    ///     The binding that will be applied to the generated element.
    /// </summary>
    /// <remarks>
    ///     This isn't a DP because if it were getting the value would evaluate the binding.
    /// </remarks>

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

Та же проблема существует с ComboBoxColumn, когда вы хотите выполнить привязку к источнику элементов. Вы можете выполнить привязку к StaticResource, но у StaticResources нет контекста данных. Вы можете использовать поставщик данных объекта или просто создать экземпляр непосредственно в xaml.

, но я бы просто создал столбцы в коде и установил заголовок. тогда эта проблема просто исчезнет.

есть хорошая статья здесь о визуальной компоновке.

2
ответ дан 28 November 2019 в 05:40
поделиться

Кстати, в Silverlight (проверено с SL 3.0 ) вы можете просто использовать свойство Header в качестве DataContext для ControlTemplate , установленного с помощью HeaderStyle (см. мой вопрос, связанный с по SO ).

Я только что попробовал это решение в WPF 3.5, используя WPF Toolkit DataGrid и , оно работает !

4
ответ дан 28 November 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: