Nikola Milenkovski
Nikola Milenkovski

Reputation: 37

WPF C# Nesting data from list

I have this prototype to implement

enter image description here

enter image description here

enter image description here

enter image description here

This is what I have so far in my code

MainViewModel.cs

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using GenericQueueProt.Models;

namespace GenericQueueProt.ViewModels
{
        public MainViewModel()
        {
            Properties = new List<Property>
            {
                new Property
                {
                    State = "Proccess applicaton",
                    StateDays = 713,
                    Ward = "WARD1",
                    CanvassArea = "001 A&G",
                    PollingDistrict = "CDA",
                    Office = "0"
                },
                new Property
                {
                    State = "Due Evaluation",
                    StateDays = 713,
                    Ward = "WARD2",
                    CanvassArea = "034 MILN",
                    PollingDistrict = "CO",
                    Office = "0"
                },
                new Property
                {
                    State = "Due Evaluation",
                    StateDays = 713,
                    Ward = "WARD1",
                    CanvassArea = "003 A&B2",
                    PollingDistrict = "CDA",
                    Office = "0"
                },
                new Property
                {
                    State = "Proccess applicaton",
                    StateDays = 713,
                    Ward = "WARD1",
                    CanvassArea = "031 LYTH",
                    PollingDistrict = "AW",
                    Office = "0"
                },
                new Property
                {
                    State = "Proccess applicaton",
                    StateDays = 713,
                    Ward = "WARD1",
                    CanvassArea = "013 HAW",
                    PollingDistrict = "AO",
                    Office = "0"
                },
                new Property
                {
                    State = "Evaluated",
                    StateDays = 713,
                    Ward = "WARD3",
                    CanvassArea = "031 LYTH",
                    PollingDistrict = "CI",
                    Office = "0"
                },
                new Property
                {
                    State = "Due Evaluation",
                    StateDays = 713,
                    Ward = "WARD2",
                    CanvassArea = "035 S&KL",
                    PollingDistrict = "CC",
                    Office = "0"
                },
                new Property
                {
                    State = "Due Evaluation",
                    StateDays = 713,
                    Ward = "WARD2",
                    CanvassArea = "035 S&KL",
                    PollingDistrict = "CZ",
                    Office = "0"
                },
                new Property
                {
                    State = "Evaluated",
                    StateDays = 713,
                    Ward = "WARD3",
                    CanvassArea = "003 A&B2",
                    PollingDistrict = "AD",
                    Office = "0"
                },
                new Property
                {
                    State = "Proccess applicaton",
                    StateDays = 713,
                    Ward = "WARD1",
                    CanvassArea = "001 A&G",
                    PollingDistrict = "CD",
                    Office = "0"
                }
            };
        }
    }
}

Property.cs

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static GenericQueueProt.ViewModels.MainViewModel;

namespace GenericQueueProt.Models
{
    public class Property
    {
        public string State { get; set; }

        public int StateDays { get; set; }

        public string Ward { get; set; }

        public string CanvassArea { get; set; }

        public string PollingDistrict { get; set; }

        public string Office { get; set; }

        public List<Group> Groups {get; set;}
    }
}

MainWindow.xaml.cs

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace GenericQueueProt
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}

MainWindow.xaml

        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:GenericQueueProt"
        xmlns:ViewModels="clr-namespace:GenericQueueProt.ViewModels" x:Class="GenericQueueProt.MainWindow"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="29*"/>
            <ColumnDefinition Width="7*"/>
        </Grid.ColumnDefinitions>
        <Grid.DataContext>
            <ViewModels:MainViewModel/>
        </Grid.DataContext>
        <Grid x:Name="CheckBoxes">
            <StackPanel x:Name="chbPanel" Background="LightGray" Orientation="Horizontal" Margin="0,0,0,384" Grid.ColumnSpan="2"  >
                <CheckBox Name="stateCheckBox" Margin="10" >State</CheckBox>
                <CheckBox Name="stateDaysCheckBox" Margin="10">State Days</CheckBox>
                <CheckBox Name="wardCheckBox"  Margin="10">ward</CheckBox>
                <CheckBox Name="canvassAreaCheckBox" Margin="10">Canvass area</CheckBox>
                <CheckBox Name="pdCheckBox" Margin="10" >PD</CheckBox>
                <CheckBox Name="officeCheckBox" Margin="10" >Office</CheckBox>
            </StackPanel>
        </Grid>

        <ListView ItemsSource="{Binding Properties}" HorizontalAlignment="Left" Height="369" Margin="40,40,0,0" VerticalAlignment="Top" Width="742" Grid.ColumnSpan="2">
            <ListView.Resources>
                <DataTemplate x:Key="ShowItems">
                    <StackPanel>

                    </StackPanel>
                </DataTemplate>
            </ListView.Resources>

            <ListView.View>
                <GridView x:Name="ItemGridView">
                    <GridView.Columns>
                        <GridViewColumn Header="State" Width="120" DisplayMemberBinding="{Binding State}"/>
                        <GridViewColumn Header="State Days" Width="70" DisplayMemberBinding="{Binding StateDays}"/>
                        <GridViewColumn Header="Ward" Width="100" DisplayMemberBinding="{Binding Ward}"/>
                        <GridViewColumn Header="Canvass Area" Width="120" DisplayMemberBinding="{Binding CanvassArea}"/>
                        <GridViewColumn Header="Polling District" Width="120" DisplayMemberBinding="{Binding PollingDistrict}"/>
                        <GridViewColumn Header="Office" Width="70" DisplayMemberBinding="{Binding Office}"/>

                    </GridView.Columns>
                </GridView>
            </ListView.View>
        </ListView>
    </Grid>
</Window>

The thing is that I'm a beginner at this and honestly I don't have any idea how can I implement this. So please if anyone can help, give me some reference or any advice I would be very thankful. I know I am asking too much but really guys I'm struggling with this for almost two weeks now.

Upvotes: 0

Views: 58

Answers (1)

Erwin Draconis
Erwin Draconis

Reputation: 784

not sure if i understand your question correctly, but you should check if your checkbox is checked then you can hide your list column by (give your list a name):

listView1.Columns.RemoveAt(3);

or to show it back

listView1.Columns.Insert(3, "Column Name");

Upvotes: 1

Related Questions