Здравствуйте. Хочу создать UIElement, содержащий, например, 2 стандартных эллипса:
public class MyUI : UIElement
{
Ellipse el;
Ellipse el1;
public MyUI(Canvas canv)
{
Random rnd = new Random();
el = new Ellipse();
el1 = new Ellipse();
el.Width = 30; el1.Width = 30;
el.Height = 30; el1.Height = 30;
el.Fill = Brushes.Green; el1.Fill = Brushes.Red;
canv.Children.Add(el); canv.Children.Add(el1);
Canvas.SetTop(el, rnd.Next(300)); Canvas.SetTop(el1, rnd.Next(300));
Canvas.SetLeft(el, rnd.Next(300)); Canvas.SetLeft(el1, rnd.Next(300));
}
}
Подскажите, как создать событие нажатия кнопки мыши по моему элементу (назовём его MyUI_MouseLeftButtonDown), которое будет срабатывать при нажатии на один из эллипсов? подозреваю, что можно как-то использовать стандартные события Ellipse_MouseLeftButtonDown для каждого из эллипсов.
Давайте определим свои события, которые будут генерироваться в обработчиках стандартных событий MouseLeftButtonDown
:
public partial class TwoEllipses : UserControl
{
//наше новое событие
public event EventHandler LeftEllipseClicked;
protected void OnLeftEllipseClicked()
{
if (LeftEllipseClicked != null)
{
LeftEllipseClicked(this, EventArgs.Empty);
}
}
public TwoEllipses()
{
InitializeComponent();
}
//обработчик стандартного события MouseLeftButtonDown
private void Ellipse_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
//генерируем наше новое событие
OnLeftEllipseClicked();
}
}
UserControl:
<UserControl x:Class="WpfApplication.TwoEllipses"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Canvas>
<Ellipse Width="115" Height="160" Fill="Blue"
MouseLeftButtonDown="Ellipse_MouseLeftButtonDown">
</Ellipse>
<Ellipse Width="115" Height="160" Fill="Blue" Canvas.Left="160"
MouseLeftButtonDown="Ellipse_MouseLeftButtonDown">
</Ellipse>
</Canvas>
</Grid>
</UserControl>
Используем:
<Window x:Class="WpfApplication.MainWindow"
xmlns:local="clr-namespace:WpfApplication" >
<Window.Resources>
</Window.Resources>
<Grid>
<local:TwoEllipses LeftEllipseClicked="TwoEllipses_LeftEllipseClicked"/>
</Grid>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
How to create custom task and add it to Build Process so that after build this task sends my artefacts to my e-mail?
Как сделать, чтобы высота ячейки автоматически увеличивалась в зависимости от размера контента внутри неё?