WPF学习笔记

WPF学习笔记


Combox多级联动

<h3>ViewModel</h3> <pre><code class="language-csharp">public class WindowsViewmodel : INotifyPropertyChanged { public class Data { public int id { get; set; } public string Name { get; set; } public int Pid { get; set; } } public List&amp;lt;Data&amp;gt; ALL { get; set; } = new List&amp;lt;Data&amp;gt;(); public ObservableCollection&amp;lt;Data&amp;gt; SF { get; set; } = new ObservableCollection&amp;lt;Data&amp;gt;(); public ObservableCollection&amp;lt;Data&amp;gt; XJ { get; set; } = new ObservableCollection&amp;lt;Data&amp;gt;(); public ObservableCollection&amp;lt;Data&amp;gt; ZJ { get; set; } = new ObservableCollection&amp;lt;Data&amp;gt;(); private int s; public int S { get { return s; } set { s = value; XJ.Clear(); var xx = ALL.Where(p =&amp;gt; p.Pid == value).ToList(); foreach (var item in xx) { XJ.Add(item); } ZJ.Clear(); var zz = ALL.Where(p =&amp;gt; p.Pid == XJ[0].id).ToList(); foreach (var item in zz) { ZJ.Add(item); } } } private int x; public int X { get { return x; } set { x = value; ZJ.Clear(); var zz = ALL.Where(p =&amp;gt; p.Pid == value).ToList(); foreach (var item in zz) { ZJ.Add(item); } } } private int z; public int Z { get { return z; } set { z = value; } } public WindowsViewmodel() { ALL.Add(new Data() { id = 1, Name = &amp;quot;Zs1&amp;quot;, Pid = 0 }); ALL.Add(new Data() { id = 2, Name = &amp;quot;Zs2&amp;quot;, Pid = 0 }); ALL.Add(new Data() { id = 3, Name = &amp;quot;Zs3&amp;quot;, Pid = 0 }); ALL.Add(new Data() { id = 4, Name = &amp;quot;Zs4&amp;quot;, Pid = 1 }); ALL.Add(new Data() { id = 5, Name = &amp;quot;Zs5&amp;quot;, Pid = 1 }); ALL.Add(new Data() { id = 6, Name = &amp;quot;Zs6&amp;quot;, Pid = 1 }); ALL.Add(new Data() { id = 7, Name = &amp;quot;Zs7&amp;quot;, Pid = 2 }); ALL.Add(new Data() { id = 8, Name = &amp;quot;Zs8&amp;quot;, Pid = 2 }); ALL.Add(new Data() { id = 9, Name = &amp;quot;Zs9&amp;quot;, Pid = 2 }); ALL.Add(new Data() { id = 10, Name = &amp;quot;Zs10&amp;quot;, Pid = 3 }); ALL.Add(new Data() { id = 11, Name = &amp;quot;Zs11&amp;quot;, Pid = 3 }); ALL.Add(new Data() { id = 12, Name = &amp;quot;Zs12&amp;quot;, Pid = 3 }); ALL.Add(new Data() { id = 13, Name = &amp;quot;Zs13&amp;quot;, Pid = 4 }); ALL.Add(new Data() { id = 14, Name = &amp;quot;Zs14&amp;quot;, Pid = 4 }); ALL.Add(new Data() { id = 15, Name = &amp;quot;Zs15&amp;quot;, Pid = 4 }); ALL.Add(new Data() { id = 16, Name = &amp;quot;Zs16&amp;quot;, Pid = 5 }); ALL.Add(new Data() { id = 17, Name = &amp;quot;Zs17&amp;quot;, Pid = 5 }); ALL.Add(new Data() { id = 18, Name = &amp;quot;Zs18&amp;quot;, Pid = 5 }); ALL.Add(new Data() { id = 19, Name = &amp;quot;Zs19&amp;quot;, Pid = 6 }); ALL.Add(new Data() { id = 20, Name = &amp;quot;Zs20&amp;quot;, Pid = 6 }); ALL.Add(new Data() { id = 21, Name = &amp;quot;Zs21&amp;quot;, Pid = 6 }); ALL.Add(new Data() { id = 22, Name = &amp;quot;Zs22&amp;quot;, Pid = 7 }); ALL.Add(new Data() { id = 23, Name = &amp;quot;Zs23&amp;quot;, Pid = 7 }); ALL.Add(new Data() { id = 24, Name = &amp;quot;Zs24&amp;quot;, Pid = 7 }); ALL.Add(new Data() { id = 25, Name = &amp;quot;Zs25&amp;quot;, Pid = 8 }); ALL.Add(new Data() { id = 26, Name = &amp;quot;Zs26&amp;quot;, Pid = 8 }); ALL.Add(new Data() { id = 27, Name = &amp;quot;Zs27&amp;quot;, Pid = 8 }); ALL.Add(new Data() { id = 28, Name = &amp;quot;Zs28&amp;quot;, Pid = 9 }); ALL.Add(new Data() { id = 29, Name = &amp;quot;Zs29&amp;quot;, Pid = 9 }); ALL.Add(new Data() { id = 30, Name = &amp;quot;Zs30&amp;quot;, Pid = 9 }); var Al = ALL.Where(p =&amp;gt; p.Pid == 0).ToList(); foreach (var item in Al) { SF.Add(item); } } public event PropertyChangedEventHandler? PropertyChanged; }</code></pre> <h3>UI界面</h3> <pre><code class="language-csharp">&amp;lt;StackPanel Grid.Row=&amp;quot;1&amp;quot;&amp;gt; &amp;lt;ComboBox Width=&amp;quot;100&amp;quot; ItemsSource=&amp;quot;{Binding SF}&amp;quot; SelectedValuePath=&amp;quot;id&amp;quot; DisplayMemberPath=&amp;quot;Name&amp;quot; SelectedValue=&amp;quot;{Binding S}&amp;quot;&amp;gt;&amp;lt;/ComboBox&amp;gt; &amp;lt;ComboBox Width=&amp;quot;100&amp;quot; ItemsSource=&amp;quot;{Binding XJ}&amp;quot; SelectedValuePath=&amp;quot;id&amp;quot; DisplayMemberPath=&amp;quot;Name&amp;quot; SelectedValue=&amp;quot;{Binding X}&amp;quot;&amp;gt;&amp;lt;/ComboBox&amp;gt; &amp;lt;ComboBox Width=&amp;quot;100&amp;quot; ItemsSource=&amp;quot;{Binding ZJ}&amp;quot; SelectedValuePath=&amp;quot;id&amp;quot; DisplayMemberPath=&amp;quot;Name&amp;quot; SelectedValue=&amp;quot;{Binding Z}&amp;quot;&amp;gt;&amp;lt;/ComboBox&amp;gt; &amp;lt;/StackPanel&amp;gt;</code></pre>

页面列表

ITEM_HTML