【问题标题】:Making a DataGrid Column Header sortable in WPF using C#使用 C# 在 WPF 中使 DataGrid 列标题可排序
【发布时间】:2010-11-20 18:12:01
【问题描述】:

我在 Visual Studio 2008 中使用 C#,并且我已经安装了 WPF 工具包。我在 testtest.xaml 中创建了一个 DataGrid。 ID 和 Parts $ 列能够通过单击各自的列标题对 DataGrid 进行排序。但是,列标题 Complete Date 没有该功能。我使用标签“DataGridTemplateColumn”来格式化该列的日期。您如何对列标题完成日期进行编程,以便您可以单击完成日期列标题并对该列进行排序。如果单击列,箭头不仅不显示,而且列标题也不是“可单击的”。 谢谢

    <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>

【问题讨论】:

    标签: wpf datagrid header jquery-ui-sortable


    【解决方案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>
    

    【讨论】:

    • 列绑定属性是否也可以?怎么办?
    猜你喜欢
    • 2010-12-15
    • 2018-05-27
    • 2011-04-13
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 2013-06-16
    相关资源
    最近更新 更多