【发布时间】:2013-01-13 15:27:30
【问题描述】:
全部,
我有以下课程
public class MyCoolClass
{
public string Field1{ get; set; }
public int? Field2{ get; set; }
}
我还有一门课
public class MyOtherClass
{
///a bunch of neat properties
public MyCoolClass CoolClass { get; set; }
}
我有一个绑定到 MyOtherClass 的集合: C#:
public ObservableCollection<MyOtherClass> MyCoolDataSource { get; }
XAML:
<GroupBox DataContext="{Binding Path=MyCoolDataSource, UpdateSourceTrigger=PropertyChanged}" Header="Test DataGrid">
<DataGrid ItemsSource="{Binding}" AutoGenerateColumns="False">
<DataGrid.Columns>
<!--A bunch of neat fields-->
<DataGridComboBoxColumn Header="CoolClass" SelectedItem={"Binding Path=CoolClass, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}">
<DataGridComboBoxColumn.ItemTemplate>
<!--DataTemplate that shows all properties of MyCoolClass-->
</DataGridComboBoxColumn.ItemTemplate>
</DataGridComboBoxColumn>
</DataGrid.Columns>
</DataGrid>
</GroupBox>
现在,我的问题是,假设我想要按某个字段排序的选项(使用 .Net 4.0)。在 WPF 中,这没有问题,我们只使用 SortMemberPath。但是,假设我想按 MyCoolClass 中的所有字段对 DataGrid 中的 CoolClass 列进行排序。这是否可以完全从 XAML 中完成,或者我是否坚持在 C# 中创建一个属性来组合这两个字段以进行排序?
谢谢。
【问题讨论】:
-
你看过这个吗:stackoverflow.com/questions/2274690/…这可能会有所帮助。
-
有趣。不过,我有两个问题。 1)这将如何与 DataGrid 一起工作(我应该添加排序需要按需),以及 2)出于某种原因,即使我引用了 WindowsBase,即使我可以在 ObjectBrowser 中看到有一个WindowsBase 库中的 System.ComponentModel,我似乎无法在我的 xaml 中为程序集 WindowsBase 声明 System.ComponentModel 命名空间。如果我尝试使用 xmlns:smc="clr-namespace:System.ComponentModel;assembly=WindowsBase" WindowsBase,我会得到一个未定义的 CLR 命名空间 o-O。
标签: c# wpf sorting wpfdatagrid