2017-05-08 11 views
0

ColumnDefinitionGrid 안의 위치를 ​​알고 있는지 알아 내려고하고 있습니다. 다음과 같이Column Grid의 정의 위치

내가 3 열이 :

<Grid.ColumnDefinitions> 
    <ColumnDefinition Name="Left" Width="120" MouseEnter="Grid_MouseEnter" MouseLeave="Grid_MouseLeave"/> 
    <ColumnDefinition/> 
    <ColumnDefinition Width="120" MouseEnter="Grid_MouseEnter" MouseLeave="Grid_MouseLeave"/> 
</Grid.ColumnDefinitions> 

<view:Button Grid.Column="0" x:Name="GoLeft" Visibility="Hidden"/> 
<view:MarkBox Grid.Column="1" x:Name="MarkBox1" 
       MinHeight="110" MinWidth="100" Width="100" Height="110"/> 
<view:Button Grid.Column="2" x:Name="GoRight" Visibility="Hidden"/> 

을 그리고, 모두 같은 MouseEnter 기능을 적용 할이 왼쪽 또는 오른쪽 ColumnDefinition에 대한인지 다른 작업을 수행했습니다. ColumnDefinitionGrid 안에 번호 또는 위치가 포함 된 속성이 있습니까?

+0

당신은 [여기]를 것을 확인할 수 있습니다 (https://msdn.microsoft.com/en-us/library를 /system.windows.controls .Columndefinition (v = vs.110) .aspx # Properties), 대답은 다음과 같이 보일 수 있습니다. 아니요.하지만 Sender.Parent.ColumnDefinitions.IndexOf()와 같은 것으로 조회 할 수 있습니다. –

+0

@Haddi, 내 솔루션을 찾았습니까? 유용한가, 아니면 좀 더 도움이 필요합니까? –

+0

안녕하세요, 아직 시도하지 않았습니다. 계속 알려 드리겠습니다. –

답변

0

GridColumn에 마우스 이벤트가 발생하지 않습니다.

그러나 Grid의 모든 UIElement 자식은 Mouse 이벤트 처리기를 가질 수 있습니다. 예를 들어 :

<Grid> 
    <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="*"/> 
    <ColumnDefinition Width="*"/> 
    <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 

    <Border Grid.Column="0" Background="Red" MouseEnter="OnMouseEnter"/> 

    <Grid Grid.Column="1" Background="Green" MouseEnter="OnMouseEnter"/> 

    <Rectangle Grid.Column="2" Fill="Blue" MouseEnter="OnMouseEnter"/> 
</Grid> 

당신이 볼 수 있듯이, 나는 다른 컨트롤에 MouseEnter 이벤트에 동일한 이벤트 핸들러를 첨부하십시오 Border하는 Grid하는 Rectangle ... 모든 컨트롤은 부모에 대한 위치를 가지고 Grid (Grid.Row, Grid.Column), 당신은 sender의 AttachedProperty 확인할 수 있습니다 이벤트 핸들러 있도록 :

private void OnMouseEnter(object sender, MouseEventArgs e) 
{ 
    var element = sender as UIElement; 

    var columnIndex = element.GetValue(Grid.ColumnProperty); 

    // use columnIndex somehow... 
}