Passing variable with RoutedEventArgs?

前端 未结 3 1685
猫巷女王i
猫巷女王i 2020-12-16 18:52

I have the following class, and want to pass the text variable as RoutedEventArgs.

  public class CloseableTabItem : TabItem
  {
    String text;

    public         


        
3条回答
  •  长情又很酷
    2020-12-16 19:39

    I needed something similar and with the help of both @Arya and @H.B. I came up with this:

    My custom RoutedEventArgs subclass

    public class ChangePageEventArgs : RoutedEventArgs {
        private readonly int _pageNumber;
    
        public int PageNumber {
            get { return _pageNumber; }
        }
    
        public ChangePageEventArgs(RoutedEvent routedEvent, int pageNumber) : base(routedEvent) {
            this._pageNumber = pageNumber;
        }
    }
    

    My child class

    private void defineButton_Click(object sender, RoutedEventArgs e) {
        ChangePageItemList(2);
    }
    
    public static readonly RoutedEvent GoToItemPropertiesViewEvent = EventManager.RegisterRoutedEvent(
    "GoToItemPropertiesView", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(NoObjectView));
    
    // Provide CLR accessors for the event
    public event RoutedEventHandler GoToItemPropertiesView {
        add { AddHandler(GoToItemPropertiesViewEvent, value); }
        remove { RemoveHandler(GoToItemPropertiesViewEvent, value); }
    }
    
    public void ChangePageItemList(int _pageNumber) {
        ChangePageEventArgs args = new ChangePageEventArgs(GoToItemPropertiesViewEvent, _pageNumber);
        this.RaiseEvent(args);
    }
    

    My parent class

    private ItemListView createItemListView() {
        _itemListView = new ItemListView();
        _itemListView.GoToItemPropertiesView += new RoutedEventHandler(ChangePage);
    
        return _itemListView;
    }
    
    private void ChangePage(object sender, RoutedEventArgs e) {
        ChangePageEventArgs args = (ChangePageEventArgs)e;
        // Value of page number is 2
        int _pageNumber = args.PageNumber;
    }
    

    Hope it helps you @Arya

提交回复
热议问题