Я создал программу, которая имеет два вида списка и панель для отображения сведений о втором элементе списка.в первом представлении списка отображаются категории.

Первые элементы представления списка создаются с использованием Observable Collection и такого класса:
public class Catagory : INotifyPropertyChanged
{
private int id;
private string name;
public int ID
{
get { return id; }
set { id = value; OnPropertyChanged(); }
}
public string Name
{
get { return name; }
set { name = value; OnPropertyChanged() ;}
}
public override string ToString()
{
return this.Name.ToString();
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged([CallerMemberName]string Caller = "")
{
if (PropertyChanged != null)
{
PropertyChanged(this,new PropertyChangedEventArgs(Caller));
}
}
/// <summary>
/// Return a list of catergory
/// </summary>
/// <returns></returns>
public static ObservableCollection<Catagory> GetCategories()
{
var cats = new ObservableCollection<Catagory>();
cats.Add(new Catagory() {id=1,name="Softwares" });
cats.Add(new Catagory() { id = 2, name = "Books" });
cats.Add(new Catagory() { id = 3, name = "Movies" });
cats.Add(new Catagory() { id = 4, name = "Learning Videos" });
cats.Add(new Catagory() { id = 5, name = "Audio" });
return cats;
}
}
И в главном окне я использую это для заполнения списка предопределенными элементами:
groups.ItemsSource= Catagory.GetCategories();
groups - это имя компонента моего представления списка.
То, что яхотел сделать, чтобы при нажатии на каждый элемент в представлении списка группы во втором представлении списка отображались элементы, принадлежащие этому элементу категории.но я понятия не имею, даже с чего начать.Я хочу знать, как это будет для большого количества данных.Пожалуйста, помогите мне.
XAML :
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="95*"/>
<RowDefinition Height="25"/>
</Grid.RowDefinitions>
<!--lists-->
<ListView x:Name="groups" />
<ListView x:Name="items" Grid.Column="1" Style="{DynamicResource ItemsList}" />
<!--ToolBars-->
<StackPanel Orientation="Horizontal" x:Name="group_tools" Grid.Column="0" Grid.Row="1" Style="{StaticResource ToolBarBackground}">
<Button Content="+" Style="{StaticResource ToolBarButtons}" Click="btn_AddCategory"/>
<Button Content="-" Style="{DynamicResource ToolBarButtons}" Click="btn_RemoveFromCategory"/>
<Button Content="*" Style="{DynamicResource ToolBarButtons}"/>
</StackPanel>
<StackPanel Orientation="Horizontal" x:Name="items_tools" Grid.Column="1" Grid.Row="1" Style="{StaticResource ToolBarBackground}">
<Button Content="+" Style="{StaticResource ToolBarButtons}"/>
<Button Content="-" Style="{DynamicResource ToolBarButtons}"/>
<Button Content="*" Style="{DynamicResource ToolBarButtons}"/>
</StackPanel>
<StackPanel Orientation="Horizontal" x:Name="preview_pane" Grid.Column="2" Grid.Row="1" Style="{StaticResource ToolBarBackground}">
<Label FontSize="10" Foreground="Gray" FontWeight="Bold" HorizontalAlignment="Right" VerticalAlignment="Center">Version: Just UI</Label>
</StackPanel>
<!-- spliters -->
<GridSplitter Grid.Column="1" HorizontalAlignment="Left" Width="1"/>
<GridSplitter Grid.Column="2" HorizontalAlignment="Left" Width="1"/>
<!--Spliters-->
</Grid>