Сделать подсписок для моего списка в WPF? - PullRequest
0 голосов
/ 31 января 2019

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

enter image description here

Первые элементы представления списка создаются с использованием 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...