委托与事件 的一个使用场景

mac2025-03-01  3

被调用的UI,修改后,改变父界面控件的值

HostWindow.cs(父界面)

public partial class HostWindow : BaseWindow {    public HostWindow(AppContext Context) : base(Context)    {       DataContext = new HostWindowViewModel(Context);       InitializeComponent();    }    //选择病历库     private void History_Click(object sender, System.Windows.RoutedEventArgs e)     {         GetHistory getHistory = new GetHistory(Context);         getHistory.ConfirmEvent += new GetHistory.delegateConfirm(p=>         {             var HistoryName = getHistory.History();             if (HistoryName != MakeStatus.All)             {                 string[] sArray = HistoryName.Split('#');                 var sqlshow = sArray[0];                 var tableshow = sArray[1];                 RegistryStorageHelper.SetValueToReg("HistoryText", tableshow);                 RegistryStorageHelper.SetValueToReg("HistoryUid", sqlshow);                 (this.DataContext as HostWindowViewModel).SelectedMedicalRecord = tableshow;             }             else             {                 RegistryStorageHelper.SetValueToReg("HistoryText", HistoryName);                 RegistryStorageHelper.SetValueToReg("HistoryUid", HistoryName);                 (this.DataContext as HostWindowViewModel).SelectedMedicalRecord = HistoryName;             }         });         getHistory.Show();     } }

GetHistory.cs(被调用的界面) public partial class GetHistory : BaseSliceWindow {     public delegate void delegateConfirm(GetHistory getHistory);     public event delegateConfirm ConfirmEvent;  

    public GetHistory(AppContext context) : base(context)     {         InitializeComponent();         HistoryName.Content = RegistryStorageHelper.GetValueFromReg<string>("HistoryText");         HistoryName.Uid = RegistryStorageHelper.GetValueFromReg<string>("HistoryUid");         this.DataBinding();         WindowStartupLocation = WindowStartupLocation.CenterScreen;         this.Topmost = true;         Array.ForEach(Context.DBTypes.ToArray(), o => { allUid.Add(o.MedicalRecordDB); });     }     private void Button_Click(object sender, RoutedEventArgs e)     {         List<Pitaya_DBType> SelectedItem = new List<Pitaya_DBType>();         Array.ForEach(list.ToArray(), o => { if (o.Selected) SelectedItem.Add(o); });

        if (ConfirmEvent != null)         {             ConfirmEvent(this);         }         this.Close();     } }

最新回复(0)