- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在这里遇到了一个关于 WPF DataGrid(.NET 4.0 中的 System.Windows.Controls.DataGrid)排序的奇怪问题。
它的 ItemsSource 绑定(bind)到 datacontext 对象的属性:
<DataGrid HeadersVisibility="Column" SelectedIndex="0" MinHeight="30" ItemsSource="{Binding FahrtenView}" AutoGenerateColumns="False" x:Name="fahrtenDG">
FahrtenView 看起来像这样:
public ICollectionView FahrtenView
{
get
{
var view = CollectionViewSource.GetDefaultView(_fahrten);
view.SortDescriptions.Add(new SortDescription("Index", ListSortDirection.Ascending));
return view;
}
}
DataGrid 已排序。然而,它仅在第一次分配 DataContext 时才会进行排序。之后,更改 DataContext(通过在数据层次结构中选择另一个“父”对象)仍然会导致对属性 FahrtenView 进行评估(我可以放入 BP,调试器会在那里停止),但添加的排序描述将被完全忽略,因此排序不会不再工作了。
即使在每个 DataContextChange 上调用 fahrtenDG.Items.Refresh() 也无济于事。
我非常确定这就是对 WPF DataGrid 进行排序的正确方法,不是吗?那么,为什么它在第一次被调用时就完美地完成了工作,却如此顽固地拒绝工作呢?
有什么想法吗?我将非常感激。
干杯,亨德里克
最佳答案
我从 DataGrid 继承来简要了解它的内部结构。我发现,由于一些神秘的原因,尽管第一次调用 OnItemsSourceChanged 时,一切看起来都很好,在每次调用 OnItemsSourceChanged 时,ItemsSource 的 SortDescription 列表 Collection View 为空。
因此,我添加了一个在 OnItemsSourceChanged 末尾调用的自定义 SetupSortDescription 事件。现在我在事件处理函数中添加排序描述,这就像一个魅力。
我认为这是 WPF 工具包 DataGrid 中的一个错误。
这是我重写的 OnItemsSourceChanged
protected override void OnItemsSourceChanged(IEnumerable oldValue, IEnumerable newValue)
{
if (SetupSortDescriptions != null && (newValue != null))
SetupSortDescriptions(this, new ValueEventArgs<CollectionView>((CollectionView)newValue));
base.OnItemsSourceChanged(oldValue, newValue);
}
关于WPF DataGrid 忽略 SortDescription,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11177351/
我有list Persons 人有身份证,类似这样的:12231d4sa32fd 我有一个转换器可以将 ID 转换为状态:(就绪/等待/不在这里)。 我在 ListView 中显示列表。 问题:如何按
在 Xaml 中,我可以使用设置自定义附加属性本地:TestClass.TestProperty =“1” 我可以使用绑定(bind)到自定义附加属性{绑定(bind)路径=(命名空间:[OwnerT
当我修改绑定(bind)在列表框中的项目的值时,我希望排序顺序应该自动更改。 但事实并非如此。 在这种情况下,我是否调用了 .SortDescriptions.Clear() 方法并重新分配了 Sor
我在这里遇到了一个关于 WPF DataGrid(.NET 4.0 中的 System.Windows.Controls.DataGrid)排序的奇怪问题。 它的 ItemsSource 绑定(bin
我的 WPF 应用程序使用 XMLDataProvider 获取其数据。 XML 文件有一个 dd/mm/yyyy 对于列出的每个项目。我正在使用对应用程序中的数据进行排序 Listbox1.Item
这个问题在这里已经有了答案: Sort on a string that may contain a number (24 个答案) How can I sort a string of text
这是单击 DataGrid 中的列标题时的默认排序方法。 .当底层列表包含 100,000 个项目时,刷新 View 大约需要 20 秒。设置 SortDescription 时可以观察到相同的延迟。
我想从 coredata 中获取所有排序的数据,但它不起作用。这是我的实体: class Kurzus: NSManagedObject { @NSManaged var kurzuskod:
myListBox.Items.SortDescriptions.Add( new SortDescription("BoolProperty", ListSortDirection.Descendi
这就是我想要的:如果我将 ICollectionview 绑定(bind)到 DataGrid,我不想在我的 Viewmodel 中丢失 SortDescription。 我创建了一个小示例项目来了解
我正在使用 SortDescription 对 ICollectionView 进行排序。 我的数据是字符串,所以我天真地假设我可以使用 null 或 "" 作为 propertyName 参数,因为
我有一个接口(interface) public interface IProperty { string Name { get; } } 及其显式实现 public class Parame
我有一个绑定(bind)到 TreeView 的 Layers 列表,其中每个实例都有一个 Effects 列表。我通过 HierarchicalDataTemplate 展示它们,效果很好,但我正在
我正在使用 VS2013、.net4.5、WPF 桌面应用程序。 Xaml: CS: this
我在使用 SortDescription 时遇到问题。我发现了一些关于这个问题的线索,比如如果你想按一个没有实现 IComparable 的类型排序,比如用户定义的类,但这不是我的情况。 我有一个类,
我是一名优秀的程序员,十分优秀!