using System; using System.Collections.Generic; using System.Linq; using System.Reflection; 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.Shapes; using FWindSoft.Events; using FWindSoft.SystemExtensions; using Test.CacheItemsTest; namespace Test.EventTest { /// /// EventWrapperTest.xaml 的交互逻辑 /// public partial class EventWrapperTest : Window { ExtendClassEvent m_Extend; private EventsWrapper m_Events = new EventsWrapper(); public EventWrapperTest() { InitializeComponent(); m_Events.AddBindings(m_Extend = new ExtendClassEvent()); Idling += EventWrapperTest_Idling; Filter += EventWrapperTest_Filter; } private void EventWrapperTest_Filter(object sender, FilterEventArgs e) { MessageBox.Show("Filter"); } private void EventWrapperTest_Idling(object sender, EventArgs e) { MessageBox.Show("Idling"); } #region 代理事件相关 public event EventHandler Idling { add { m_Events["Idling"]?.AddEventHandler(value); } remove { m_Events["Idling"]?.RemoveEventHandler(value); } } public event EventHandler Filter { add { EventWrapper wrapper = (EventWrapper)m_Events["Filter"]; if (wrapper != null) { wrapper.PHandler += value; } } remove { EventWrapper wrapper = (EventWrapper)m_Events["Idling"]; if (wrapper != null) { wrapper.PHandler -= value; } } } #endregion private void Button_Click(object sender, RoutedEventArgs e) { m_Extend.RaiseIdling(); } private void Button_Click_1(object sender, RoutedEventArgs e) { m_Extend.RaiseFilter(); } private void Button_Click_2(object sender, RoutedEventArgs e) { m_Events.RemoveBindings(m_Extend); } private void Button_Click_3(object sender, RoutedEventArgs e) { m_Events.AddBindings(m_Extend); Idling += EventWrapperTest_Idling; Filter += EventWrapperTest_Filter; } private void Button_Click_4(object sender, RoutedEventArgs e) { CacheItemsUtils.Test(); } } public class ExtendClassEvent { public event EventHandler Idling; public event EventHandler Filter; public void RaiseIdling() { Idling?.Invoke(this, new EventArgs()); } public void RaiseFilter() { Filter?.Invoke(this, null); } } }