2014-12-11 3 views
0

У меня есть сетка, в которой у меня есть эллипс, и я хочу, чтобы на мыши был над эллипсом, который должен быть заполнен красным цветом. Как я могу это сделать? если я поставлю триггер в эллипсе, то он будет только на мышечном перевертывании с эллипсом. Но я хочу, чтобы цвет был изменен, а мышь на родительской сетке эллипса.Изменение свойства Ellipse на родительской сетке mouseover WPF

Вот мой код пользовательского элемента управления:

<UserControl x:Class="DeviceIcon" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     mc:Ignorable="d" 
     d:DesignHeight="31" d:DesignWidth="31"> 


<Grid Background="#00000000" Name="MainGrid"> 
    <Ellipse Name="BackCircle" Width="30" Height="30" Fill="Lavender" Stroke="Red" > 

    </Ellipse> 
</Grid> 

ответ

0

Вы можете добавить обработчик событий в родительской сетку. События мыши выходят в сетку из эллипса и других дочерних элементов.

XAML

<Grid Background="#00000000" 
     Name="MainGrid" 
     MouseEnter='MainGrid_MouseEnter' 
     MouseLeave='MainGrid_MouseLeave'> 

    <Ellipse Name="BackCircle" 
     Width="30" 
     Height="30" 
     Fill="Lavender" 
     Stroke="Red"> 

    </Ellipse> 
    </Grid> 

Код

private Brush _oldFill; 
    private void MainGrid_MouseEnter(object sender, MouseEventArgs e) { 
     _oldFill = BackCircle.Fill; 
     BackCircle.Fill = new SolidColorBrush(Colors.Red); 
     } 

    private void MainGrid_MouseLeave(object sender, MouseEventArgs e) { 
     BackCircle.Fill = _oldFill; 
    }