如何从DataTemplate绑定到GridViewColumns项

时间:2014-01-23 10:48:07

标签: c# wpf xaml listview datatemplate

我在ListView中定义了DataTemplate Resources。我想将GridViewColumn的内容转发给DataTemplate,以便DataTemplate可以重复用于多个GridViewColumns。我有一个名为Property1的属性,我希望将其绑定到GridViewColumn,然后将其转发到DataTemplate,它将显示在TextBlock中。但是,GridViewColumn没有任何我可以绑定它的Content属性。

这是一个精简代码:

<ListView>

  <ListView.Resources>
    <DataTemplate x:Key="PropertyTemplate>
      <TextBlock Text"{Binding}" />
    <DataTemplate>
  </ListView.Resources>

  <ListView.View>
    <GridView>
      <!-- No Content property in GridViewColumn -->
      <GridViewColumn CellTemplate="{StaticResource PropertyTemplate}" Content={Binding Property1} />
    <GridView>
  </ListView.View>

</ListView>

如何将绑定属性从GridViewColumn转发到GridViewColumn的DataTemplate?

1 个答案:

答案 0 :(得分:0)

<强>更新

这应该有效:

<ListView ItemsSource="{Binding Items}">
    <ListView.Resources>
        <DataTemplate x:Key="PropertyTemplate">
            <TextBlock Text="{Binding Property1}" />
        </DataTemplate>
    </ListView.Resources>
    <ListView.View>
        <GridView>
            <GridViewColumn CellTemplate="{StaticResource PropertyTemplate}"  />
        </GridView>
    </ListView.View>
</ListView>

以前的答案(不起作用): 使用DisplayMemberBinding属性。您可能还想为列设置标题文本:

<GridView>
      <GridViewColumn CellTemplate="{StaticResource PropertyTemplate}" DisplayMemberBinding={Binding Property1} Header="Some column"/>
</GridView>

您还需要在ListView上设置ItemsSource。