Я пытаюсь использовать просмотр списка для отображения некоторых данных, а также пытаюсь сгруппировать значения.На данный момент мои классы расположены таким образом, что мне нужно показать значение в списке из свойства, вложенного глубоко в другие свойства.Сейчас я не могу этого достичь.
Мой xaml-код:
<Window.Resources>
<CollectionViewSource x:Key="MyCollectionSource"
Source="{Binding Path=MySource}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="IDTODisplay" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
<Window.DataContext>
<local:MainWindowViewModel/>
</Window.DataContext>
<Grid>
<ListView x:Name="StackOverflowList" HorizontalAlignment="Left" FontSize="14"
Height="514" Margin="56,102,0,0" VerticalAlignment="Top" Width="243"
ItemsSource="{Binding Source={StaticResource MyCollectionSource}, IsAsync=True}"
IsSynchronizedWithCurrentItem="True"
>
<ListView.View>
<GridView x:Name="gridview1" >
<GridViewColumn x:Name="result" Header="Result" DisplayMemberBinding="{Binding Path= XXXXXXX}" Width="120"/>
<GridViewColumn x:Name ="value" Header="Value" DisplayMemberBinding="{Binding Path= XXXXXXX}" Width="120" >
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>
В MainWindowViewModel:
class MainWindowViewModel
{
public ObservableCollection<Class1> MySource { get; set; }
}
public class Class1
{
public int orderId { get; set; }
public int SerialNumber { get; set; }
public List<Class2> Class2List { get; set; }
}
public class Class2
{
public int class2Id { get; set; }
public List<Class3> Class3List { get; set; }
}
public class Class3
{
public int Class3ID { get; set; }
public List<Class4> Class4List { get; set; }
}
public class Class4
{
public int Class4ID { get; set; }
public int IDTODisplay { get; set; }
public int ValueTODisplay { get; set; }
}
Я хочу показать просмотр списка таким образом, чтобыЭлементы сгруппированы по IDTODisplay, и я могу показать ValueTODisplay рядом с ним примерно так:
Resutl Value
0 ---This is IDTODisplay and grouping of items is based on this.
001 45 001 is Class4ID and 45 is ValueTODisplay of class 4 and so on
002 46
003 47
1
001 500
002 501
Edit2: Предполагая, что я не хочу переходить на сетку данных и хочу использоватьТолько просмотр списка и упрощение моего вложения классов, как показано ниже. Как я могу добиться группировки и показать значения в представлении списка
public class classA
{
public int ClassId { get; set; }
public int SerialNumber { get; set; }
public List<classx> ClassXList { get; set; }
}
public class classx
{
public int ClassxId { get; set; }
public bool Value{ get; set; }
}
public ObservableCollection<classA> MySource { get; set; }
MySource = new ObservableCollection<classA>();
List<classx> _classXList = new List<classx>();
classx c1 = new classx();
c1.ClassxId = 0;
c1.Value= true;
classx c2 = new classx();
c2.ClassxId = 2;
c2.Value= false;
classx c3 = new classx();
c3.ClassxId = 3;
c3.Value= true;
classx c44 = new classx();
c44.ClassxId = 4;
c44.Value= false;
_classXList.Add(c1);
_classXList.Add(c2);
_classXList.Add(c3);
_classXList.Add(c44);
classA p1 = new classA();
p1.ClassId = 001;
p1.SerialNumber = 001;
p1.ClassXList = _classXList;
classA p2 = new classA();
p2.ClassId = 001;
p2.SerialNumber = 001;
p2.ClassXList = _classXList;
classA p3 = new classA();
p3.ClassId = 001;
p3.SerialNumber = 001;
p3.ClassXList = _classXList;
Application.Current.Dispatcher.Invoke(() => MySource.Add(p1));
Application.Current.Dispatcher.Invoke(() => MySource.Add(p2));
Application.Current.Dispatcher.Invoke(() => MySource.Add(p3));
Ожидаемый результат в представлении списка
Group1
0 true
2 false
3 true
4 false
Group2
0 true
2 false
3 true
4 false
Group3
0 true
2 false
3 true
4 false