2014-12-11 9 views
0

나는 타원이있는 그리드가 있는데, 마우스 위에 있으면 타원이 붉은 색으로 채워 져야합니다. 어떻게하면 돼? 타원에서 방아쇠를 놓으면 마우스 오버 오버에서만 타원형으로 나타납니다. 하지만 난 그 색상을 변경해야합니다 o 마우스가 타원의 부모 그리드에 끝났습니다.부모 모눈 마우스 오버에서 타원 속성 변경 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; 
    }