Подтвердить что ты не робот

Создание заголовка столбца DataGrid для сортировки в WPF с использованием С#

Я использую С# в Visual Studio 2008, и я устанавливаю WPF Toolkit. Я создал DataGrid в testtest.xaml. Столбец ID и Parts $имеет возможность сортировать DataGrid, нажимая на их уважающие заголовки столбцов. Однако заголовок столбца "Полная дата" не обладает этой способностью. Я использовал тег "DataGridTemplateColumn" для форматирования дат для этого столбца. Как вы программируете заголовок столбца "Полная дата" , чтобы вы могли щелкнуть заголовок столбца "Полная дата" и отсортировать этот столбец. Если вы нажмете на столбец, стрелка не только не будет отображаться, но заголовок столбца не будет "clickable". Спасибо вам

  

    <Label Height="22" HorizontalAlignment="Left" Margin="10,45,0,0" Name="label1" VerticalAlignment="Top" Width="41">Task</Label>
    <my:DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False" Margin="140,83,67,28" Name="dataGrid1" GridLinesVisibility="Vertical" IsReadOnly="True">
        <my:DataGrid.Columns>
            <my:DataGridTextColumn    Binding="{Binding Path=[ID]}" Header="ID" />
            <my:DataGridTextColumn Binding="{Binding Path=p}" Header="Parts $" />
            <my:DataGridTemplateColumn  SortMemberPath="" Header="Complete Date">
                <my:DataGridTemplateColumn.CellTemplate >
                    <DataTemplate>
                        <TextBlock>
                            <TextBlock.Text>
                                <Binding Path="CompleteDate" ConverterCulture="en-GB" StringFormat="{}{0:MM/dd/yyyy}"/>
                            </TextBlock.Text>
                        </TextBlock>
                    </DataTemplate>
                </my:DataGridTemplateColumn.CellTemplate>
            </my:DataGridTemplateColumn>
        </my:DataGrid.Columns>
    </my:DataGrid>
</Grid>

4b9b3361

Ответ 1

В вашем DataGridTemplateColumn у вас установлено значение SortMemberPath равным "". Если вы установите это для фактического свойства элемента (например, CompleteDate), вы сможете отсортировать его. Вы также можете установить CanUserSort="true" или CanUserSort="false" в выбранных столбцах.

SortMemberPath дает свойство сортировать, когда пользователь пытается сортировать. Если это не задано, сетка не знает, как сортировать этот столбец (он не использует текст в столбце)

            <my:DataGridTemplateColumn  SortMemberPath="CompleteDate" Header="Complete Date" CanUserSort="true">
            <my:DataGridTemplateColumn.CellTemplate >
                    <DataTemplate>
                        <TextBlock>
                            <TextBlock.Text>
                                <Binding Path="CompleteDate" ConverterCulture="en-GB" StringFormat="{}{0:MM/dd/yyyy}"/>
                            </TextBlock.Text>
                        </TextBlock>
                    </DataTemplate>
                </my:DataGridTemplateColumn.CellTemplate>
            </my:DataGridTemplateColumn>