using System; using System.Collections.ObjectModel; using System.ComponentModel; using System.Runtime.CompilerServices; using System.Windows.Controls; using WPFProject.Models; namespace WPFProject.UI.Test { /// /// ProgramList.xaml 的交互逻辑 /// public partial class ProgramList : UserControl, INotifyPropertyChanged { public virtual event PropertyChangedEventHandler PropertyChanged; protected virtual void RaisePropertyChanged(string name) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } protected void RaiseAndSetIfChanged(ref T old, T @new, [CallerMemberName] string propertyName = null) { old = @new; if (propertyName != null) { RaisePropertyChanged(propertyName); } } private ObservableCollection _Programs = new ObservableCollection { new Program{ Name="123", Sequences = new ObservableCollection { new Sequence{ Name="S123" }, new Sequence { Name="S223" } } }, new Program{ Name="223", Sequences = new ObservableCollection { new Sequence{ Name="D123" }, new Sequence { Name="D223" } } } }; public ObservableCollection Programs { get { return _Programs; } set => RaiseAndSetIfChanged(ref _Programs, value); } public ProgramList() { DataContext = this; InitializeComponent(); } public event EventHandler ProgramChanged; private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e) { ProgramChanged?.Invoke(this, e.AddedItems[0] as Program); } } }