Применить к каждому элементу содержимого событие

avatar
Raiho
8 апреля 2018 в 03:08
58
1
0

Мой первый вопрос заключается в том, как назначить каждый из элементов контента событию. Это означает, что у каждого элемента есть свое индивидуальное событие.

У меня есть RadialMenu. Внутри него находятся RadialMenuItems. Пользователь должен иметь возможность добавлять и удалять их по своему усмотрению, но события должны иметь одинаковые функции, но индивидуальные для каждого из этих элементов. (Click, MouseEnter, MouseLeave)

Вот что у меня есть:

var i = 0;

radialMenu.Items.Add(new RadialMenuItem
    {
        Name = "Item" + i,
        Content = new System.Windows.Controls.TextBlock { FontWeight = FontWeights.Bold, Foreground = textBrush, Text = text },
        ArrowBackground = arrowBackgroundBrush,
        EdgeBackground = edgeBrush,
        Background = backgroundBrush,
    });
i++; 

foreach (var item in radialMenu.Content)
{
    item.MouseEnter += new MouseEventHandler( (sender, args) => { } );
    item.MouseLeave += new MouseEventHandler( (sender, args) => { } );
    item.Click += new RoutedEventHandler( (sender, args) => { } );
}

Мой второй вопрос: является ли такой подход плохой идеей для WPF? Если да, то как я могу сделать лучше?

Источник

Ответы (1)

avatar
Christopher Kiessling
8 апреля 2018 в 05:21
1
radialMenu.Items.forEach(item => item.Click += (se, a) => /*...*/);
Raiho
8 апреля 2018 в 05:43
0

THX, это именно то, что я искал. "Отсутствовали тела" радиальное Menu.Items.forEach(item => item.Click += (se, a) => { } );