WPF ListBox's ItemsSource depend on another's ListBoxItem and fully implemented in xaml

//xaml
 <Grid>
     <Grid.ColumnDefinitions>
         <ColumnDefinition/>
         <ColumnDefinition/>
         <ColumnDefinition/>
     </Grid.ColumnDefinitions>
     <ListBox Grid.Column="0" ItemsSource="{Binding}" DisplayMemberPath="CountryName" x:Name="lbx1"/>
     <ListBox Grid.Column="1" ItemsSource="{Binding SelectedItem.StatesList,ElementName=lbx1}" 
              DisplayMemberPath="StateName" x:Name="lbx2"/>
     <ListBox Grid.Column="2" ItemsSource="{Binding SelectedItem.CityList,ElementName=lbx2}"
              DisplayMemberPath="CityName" x:Name="lbx3"/>
 </Grid>

 

//Whole

//xaml
<Window x:Class="WpfApp218.MainWindow"
        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:WpfApp218"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <ListBox Grid.Column="0" ItemsSource="{Binding}" DisplayMemberPath="CountryName" x:Name="lbx1"/>
        <ListBox Grid.Column="1" ItemsSource="{Binding SelectedItem.StatesList,ElementName=lbx1}" 
                 DisplayMemberPath="StateName" x:Name="lbx2"/>
        <ListBox Grid.Column="2" ItemsSource="{Binding SelectedItem.CityList,ElementName=lbx2}"
                 DisplayMemberPath="CityName" x:Name="lbx3"/>
    </Grid>
</Window>


//cs
using System;
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;
using Newtonsoft.Json;

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

        private void SerializeDemo()
        {
            var countriesList = new[]
            {
                new
                {
                    CountryId=1,
                    CountryName="USA",
                    StatesList=new[]
                    {
                        new
                        {
                            StateId=1,
                            StateName="NY",
                            CityList=new []
                            {
                                new
                                {
                                    CityId=1,
                                    CityName="NYC1"
                                },
                                 new
                                {
                                    CityId=1,
                                    CityName="NYC2"
                                },
                                  new
                                {
                                    CityId=1,
                                    CityName="NYC1"
                                }
                            }
                        },
                        new
                        {
                            StateId=2,
                            StateName="CA",
                            CityList=new []
                            {
                                new
                                {
                                    CityId=1,
                                    CityName="CAC1"
                                },
                                 new
                                {
                                    CityId=1,
                                    CityName="CAC2"
                                },
                                  new
                                {
                                    CityId=1,
                                    CityName="CAC3"
                                }
                             }
                        },
                        new
                        { 
                            StateId=3,
                            StateName="FL",
                            CityList=new []
                            {
                                new
                                {
                                    CityId=1,
                                    CityName="FLC1"
                                },
                                 new
                                {
                                    CityId=1,
                                    CityName="FLC2"
                                },
                                  new
                                {
                                    CityId=1,
                                    CityName="FLC3"
                                }
                            } 
                        }
                    }
                },
                new
                {
                    CountryId=2,
                    CountryName="JP",
                    StatesList=new[]
                    {
                        new
                        {
                            StateId=1,
                            StateName="TY1",
                            CityList=new []
                            {
                                new
                                {
                                    CityId=1,
                                    CityName="TYC1"
                                },
                                 new
                                {
                                    CityId=1,
                                    CityName="TYC2"
                                },
                                  new
                                {
                                    CityId=1,
                                    CityName="TYC3"
                                }
                            }
                        },
                        new
                        {
                            StateId=2,
                            StateName="DJ",
                            CityList=new []
                            {
                                new
                                {
                                    CityId=1,
                                    CityName="DJC1"
                                },
                                 new
                                {
                                    CityId=1,
                                    CityName="DJC2"
                                },
                                  new
                                {
                                    CityId=1,
                                    CityName="DJC3"
                                }
                            }
                        },
                        new
                        {
                            StateId=3,
                            StateName="JD",
                            CityList=new []
                            {
                                new
                                {
                                    CityId=1,
                                    CityName="JDC1"
                                },
                                 new
                                {
                                    CityId=1,
                                    CityName="JDC2"
                                },
                                  new
                                {
                                    CityId=1,
                                    CityName="JDC3"
                                }
                            }
                        }
                    }
                },
                new
                {
                    CountryId=3,
                    CountryName="SP",
                    StatesList=new[]
                    {
                        new
                        {
                            StateId=1,
                            StateName="SP1",
                            CityList=new []
                            {
                                new
                                {
                                    CityId=1,
                                    CityName="SP1C1"
                                },
                                 new
                                {
                                    CityId=1,
                                    CityName="SP1C2"
                                },
                                  new
                                {
                                    CityId=1,
                                    CityName="SP1C3"
                                }
                            }
                        },
                        new
                        {
                            StateId=2,
                            StateName="SP2",
                            CityList=new []
                            {
                                new
                                {
                                    CityId=1,
                                    CityName="SP2C1"
                                },
                                 new
                                {
                                    CityId=1,
                                    CityName="SP2C2"
                                },
                                  new
                                {
                                    CityId=1,
                                    CityName="SP2C3"
                                }
                            }
                        },
                        new
                        {
                            StateId=3,
                            StateName="SP3",
                            CityList=new []
                            {
                                new
                                {
                                    CityId=1,
                                    CityName="SP3C1"
                                },
                                 new
                                {
                                    CityId=1,
                                    CityName="SP3C2"
                                },
                                  new
                                {
                                    CityId=1,
                                    CityName="SP3C3"
                                }
                            }
                        }
                    }
                }
            };
            this.DataContext = countriesList;
            string jsonStr = JsonConvert.SerializeObject(countriesList, Formatting.Indented);
            System.IO.File.AppendAllText($"{DateTime.Now.ToString("yyyyMMddHHmmssffff")}.json", jsonStr);
        }
    }
}

 

 

 

 

 

 

 

 

 

 

posted @ 2024-07-18 19:32  FredGrit  阅读(3)  评论(0编辑  收藏  举报