如何对WPF DataGrid中除第一列以外的所有内容进行排序 - c#

我有一个WPF DataGrid,它的第一列中包含一个数字,即“排名”或“位置”。我想要的是,当我单击列以根据该列对表进行排序时,第一列保持原样。

例如:位置名称游戏积分PPG
约翰一书2 10 5
2玛丽3 12 4

按游戏降序排列时

职位名称游戏积分PPG
1玛丽3 12 4
2约翰2 10 5

有没有办法做到这一点? DataColumn似乎没有任何此类属性,并且FreezeColumnsCount始终始终将它们保留在视图中,但不会阻止它们与其余数据一起被排序。

参考方案

在http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/ffd7037d-dd77-44ec-9011-d0d43d5706aa/中,我找到了一个我在评论中建议的示例(来自Adbie的答案):

<DataGrid LoadingRow="dg_LoadingRow">
    <DataGrid.RowHeaderTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Path=Header, RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}}" />
        </DataTemplate>
    </DataGrid.RowHeaderTemplate>
</DataGrid>
private void dg_LoadingRow(object sender, DataGridRowEventArgs e)
{
    e.Row.Header = (e.Row.GetIndex() + 1).ToString();
}

OP编辑:
我刚刚验证了它即使没有绑定也可以工作。 CS代码很好,但是在XAML中,您只需要

<DataGrid LoadingRow="dg_LoadingRow" />

与哪些运算符>>兼容 - java

我这里没有什么代码int b=3; b=b >> 1; System.out.println(b); 它可以完美工作,但是当我将变量b更改为byte,short,float,double时,它包含错误,但是对于变量int和long来说,它可以完美工作,为什么它不能与其他变量一起工作? 参考方案 位移位运算符(例如>>)与任何整数类型兼…

在datagrid(wpf)中选择行索引 - c#

如何在datagrid中选择行索引? 事件SelectionChanged以下代码不起作用: private DataGridRow dgr = new DataGridRow(); private void dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e) { thi…

WPF WebBrowser甚至使用ObjectForScripting在单独的线程上锁定UI - javascript

在与WPF Web浏览器控件绑定的ObjectForScripting上调用方法时,网页UI锁定会出现一个奇怪的问题。进一步的研究使我们意识到整个UI(包括WPF应用程序而不是WebBrowser)都已锁定。使用的技术是带有Caliburn.Micro和Autofac的WPF。我在COM可见类上使用方法来推送到Caliburn.Micro提供的事件聚合器。进…

WPF MVVM中的动态TabControl - c#

我几周前开始使用WPF(在C#中),现在我需要一些高级帮助来使用tabcontrol。首先,我正在使用MVVM(模型视图ViewModel)模式来设计我的应用程序,并且我有一个约束,即试图不要在文件(初始化xaml文件)后面的代码中添加代码。现在,我的问题是在MainWindow视图(窗口)中动态创建新的tabItem,当单击按钮(例如“新建选项卡”按钮)时…

WPF-将窗口大小设置为子用户控件大小 - c#

我有一个选项卡控件,该控件动态地填充有包含各种大小的用户控件的选项卡。打开选项卡后,我希望窗口自动调整大小,使其在活动用户控件下有意义。有一种干净的方法可以做到这一点吗?我正在使用标准的mvvm模式。 参考方案 在Window类上使用SizeToContent属性。<Window x:Class="WpfApplication1.MainWi…