2014-10-26 71 views
2

我正在使用DataGrid并将ItemSource绑定到字符串列表。 问题是排序不起作用。 标题已启用并且可以单击,但数据未排序。使用DataGridTemplateColumn排序Datagrid

<DataGrid ItemsSource="{Binding CollectionNames}" SelectedItem="{Binding CurrentName}" SelectionUnit="FullRow" CanUserAddRows="False" AutoGenerateColumns="False" SelectionMode="Single" > 
       <DataGrid.Columns> 
        <DataGridTemplateColumn Width="400" CanUserSort="True" SortMemberPath="Name"> 
         <DataGridTemplateColumn.HeaderTemplate> 
          <DataTemplate> 
           <TextBlock Text="Name" Foreground="#FF40A4E0" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock> 
          </DataTemplate> 
         </DataGridTemplateColumn.HeaderTemplate> 
         <DataGridTemplateColumn.CellTemplate> 
          <DataTemplate> 
           <ContentControl> 
            <TextBlock HorizontalAlignment="Left" VerticalAlignment="Center" Text="{Binding}"/> 
           </ContentControl> 
          </DataTemplate> 
         </DataGridTemplateColumn.CellTemplate> 
        </DataGridTemplateColumn> 
       </DataGrid.Columns> 
       <DataGrid.CellStyle> 
        <Style TargetType="DataGridCell"> 
         <Setter Property="BorderThickness" Value="0"/> 
        </Style> 
       </DataGrid.CellStyle> 
      </DataGrid> 

我认为这个问题是SortMemberPath =“名称”但我不知道把,而不是“名”是什么

+0

您是否尝试过没有成员路径的排序?该字段保留给您打算排序的属性名称。由于它只是一个简单的字符串集合,你不会有一个。 – Xcalibur37 2014-10-26 16:56:46

回答

3

只要你可以设置SortMemberPath="."。当您将绑定的Path设置为"."时,这意味着整个项目将被绑定,在这种情况下,整个项目将用作分拣机的输入值。