Повторно использовать шаблон данных для нескольких типов?

У меня есть следующее DataTemplate для отображения полного имени User пример:

<DataTemplate x:Key="NameCellTemplate">
    <Label HorizontalAlignment="Stretch" Height="25">
        <Label.Content>
            <MultiBinding 
                Converter="{StaticResource FullNameConverter}"
                ConverterParameter="{x:Static Conv:NameFormat.FirstThenLast}" >

                <!-- Requires binding to object of type 'User' -->
                <Binding Path="FirstName" />
                <Binding Path="LastName" />
            </MultiBinding>
        </Label.Content>
    </Label>
</DataTemplate>

В настоящее время я использую его для настройки столбца шаблона, например так:

<DataGridTemplateColumn 
    CellTemplate="{StaticResource NameCellTemplate}" />

Этот столбец принадлежит к сетке данных, полной User экземпляры, но я хотел бы повторно использовать шаблон данных для столбца в другой сетке данных. Эта вторая сетка данных привязывается к другому типу, который вместо этого сохраняет User как собственность, поэтому я хотел бы сделать это:

<DataGridTemplateColumn 
    Binding="{Binding Path=User}" 
    CellTemplate="{StaticResource NameCellTemplate}" />

Тем не менее Binding атрибут не разрешен для столбца шаблона.

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

1 ответ

Решение

В этом случае, так как элементы данных строки таблицы данных различаются, вы можете применить шаблон следующим образом:

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <ContentControl Content="{Binding User}" 
                            ContentTemplate="{StaticResource NameCellTemplate}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Другие вопросы по тегам