У меня есть GridView, который отображает некоторые значения:
<ListView ItemsSource="{Binding MyDataSource}">
<ListView.View>
<GridView>
<GridViewColumn Header="Date1" DisplayMemberBinding="{Binding Date1}" />
<GridViewColumn Header="Date2" DisplayMemberBinding="{Binding Date2}" />
...other Columns, not necessarily containing dates...
</GridView>
</ListView.View>
</ListView>
Это отлично работает. Теперь я хочу создать шаблон данных, который форматирует дату определенным образом:
<DataTemplate x:Key="MySpecialDate">
<TextBlock Text="{Binding StringFormat={}{0:yyyy.MM.dd}}" />
</DataTemplate>
Добавление CellTemplate
не будет работать, если указано DisplayMemberBinding
. Таким образом, я должен удалить атрибут DisplayMemberBinding
:
<GridViewColumn Header="Date1" CellTemplate="{StaticResource MySpecialDate}" />
<GridViewColumn Header="Date2" CellTemplate="{StaticResource MySpecialDate}" />
Вот вопрос : Теперь, когда DisplayMemberBinding
больше нет, как мне сообщить GridView, какое свойство отображать? GridViewColumn
не имеет свойства DataContext
.
Конечно, я мог бы поместить имя свойства (Date1
соответственно Date2
) в DataTemplate, но тогда мне понадобился бы один шаблон для каждого свойства, и это полностью разрушило бы цель иметь шаблон .
<!-- I don't want that -->
<DataTemplate x:Key="MySpecialDate1">
<TextBlock Text="{Binding Date1, StringFormat={}{0:yyyy.MM.dd}}" />
</DataTemplate>
<DataTemplate x:Key="MySpecialDate2">
<TextBlock Text="{Binding Date2, StringFormat={}{0:yyyy.MM.dd}}" />
</DataTemplate>