У меня есть список объектов "Регистрация"каждый регистр имеет список «полей».у каждого поля есть список битов.
для каждого регистра мне нужно показать его имя, имя его поля и список битов его полей.
Я попытался сделать это с помощью ListView внутри ListView внутри Listiew.,Это сработало, но когда больше 20 регистров, оно становится очень медленным и не может его использовать.
Затем я попытался использовать DataGrid, но я не могу изменить значения внутри.Все остальные решения, которые я нашел, слишком сложны.
Классы:
public class FieldBit
{
public bool _bitValue;
public override string ToString()
{
return ((_bitValue) ? 1 : 0).ToString();
}
}
public class Field
{
public string name;
public ObservableCollection<FieldBit> bitsList;
public override string ToString()
{
return name;
}
}
public class Register
{
public string name;
public ObservableCollection<Field> reg_fields = new ObservableCollection<Field>();
}
Подход ListView:
<ListView x:Name="RegistersListView" ItemsSource="{x:Bind registersList}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="structures:Register">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Text="{x:Bind name}" Grid.Row="0" />
<StackPanel Grid.Row="1">
<ListView x:Name="FieldsListView" ItemsSource="{x:Bind reg_fields}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="structures:Field">
<StackPanel>
<TextBlock Text="{x:Bind name}"/>
<ListView x:Name="BitsListView" ItemsSource="{x:Bind bitsList}" >
<DataTemplate x:DataType="structures:FieldBit">
<TextBlock Text="{x:Bind _bitValue}"/>
</DataTemplate>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
</StackPanel>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Вот и пример того, как это должно выглядеть:
Есть идеи для простого решения, которое не застрянет у меня на экране?Кажется, что единственным решением является DataGrid, но я не могу построить его правильно, любой пример для тройных списков в DataGrid был бы оценен.Благодаря.