Сетка данных с шаблонным RowHeader и ColumnHeader в Silverlight - PullRequest
0 голосов
/ 20 января 2012

Как создать сетку с шаблонными RowHeader, ColumnHeader и Cells?

ViewModel может иметь список объектов для отображения элемента RowHeader, список объектов для отображения элемента ColumnHeader.По сути, думайте об этом как о матричном отображении.

Вероятно, необходимо написать ControlTemplate, но у него заканчиваются идеи.Существует не так много документации по этой функции.

Есть идеи?

1 Ответ

0 голосов
/ 20 января 2012

Можно создать стиль для DataGridColumnHeader или DataGridRowHeader и установить для ContentTemplate значение DataTemplate, которое позволяет привязывать свойство Header. Для этого вам нужен IValueConverter, который включает привязку.

Заголовки находятся в пространстве имен Controls.Primitives:

xmlns:dp="clr-namespace:System.Windows.Controls.Primitives;assembly=System.Windows.Controls.Data"

Style:

        <Style TargetType="dp:DataGridColumnHeader" >
            <Setter Property="ContentTemplate" >
                <Setter.Value>
                    <DataTemplate>
                        <ContentPresenter Content="{Binding Converter={StaticResource vcBC}}"  />
                    </DataTemplate>
                </Setter.Value>
            </Setter>
        </Style>

Преобразователь:

public class BindingConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        if (value.GetType().Name == "Binding")
        {
            ContentControl cc = new ContentControl();
            cc.SetBinding(ContentControl.ContentProperty, value as Binding);
            return cc;
        }
        else return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return null;
    }
}

Экземпляр конвертера:

<yourassembly:BindingConverter x:Key="vcBC"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...