简体   繁体   中英

Adding events to dynamically generated WPF elements

I have several Border elements with stuff inside that are generated at runtime. I managed to spawn them but now I want to associate events to them like MouseEnter, Click, etc., but I don't know how. I managed to associate each Border element a unique name (Name property) so I could work with them if I ever needed. How can I add events to each one of the generated Border elements, in C#?

Use like this

 border.MouseEnter += new MouseEventHandler(border_MouseEnter);

void border_MouseEnter(object sender, MouseEventArgs e)
 {
   throw new NotImplementedException();
 }
 <Style x:Key="BorderNameStyle" TargetType="{x:Type BorderName}">
                <EventSetter Event="MouseEnter" Handler="itm_MouseEnter"></EventSetter>
                <EventSetter Event="MouseLeftButtonUp" Handler="itm_MouseLeftButtonUp"></EventSetter>
                <EventSetter Event="PreviewMouseRightButtonUp" Handler="itm_MouseRightButtonUp"></EventSetter>
                <EventSetter Event="MouseLeave"  Handler="itm_MouseLeave"></EventSetter>
                <EventSetter Event="MouseDoubleClick" Handler="ItemMouseDoubleClick"></EventSetter>
</Style>

By defining styles for the Border or code behind you need to call the routed events like below.

    border.MouseEnter += new MouseEventHandler(border_MouseEnter);

    void border_MouseEnter(object sender, MouseEventArgs e)
     {
        Button btn = new Button();
        btn.Click += new RoutedEventHandler(btn_Click);
     }
    void btn_Click(object sender, RoutedEventArgs e)
    {
        throw new NotImplementedException();
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM