2017-09-13 10 views

답변

2

ItemTemplate의 루트 요소에 대해 PointerEnteredPointerExited 이벤트를 처리 할 수 ​​있습니다.

XAML :

<GridView> 
    <x:Int32>1</x:Int32> 
    <x:Int32>2</x:Int32> 
    <x:Int32>3</x:Int32> 
    <GridView.ItemContainerStyle> 
     <Style TargetType="GridViewItem"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
      <Setter Property="VerticalContentAlignment" Value="Stretch" /> 
     </Style> 
    </GridView.ItemContainerStyle> 
    <GridView.ItemTemplate> 
     <DataTemplate> 
      <Grid PointerEntered="TextBlock_PointerEntered" 
          PointerExited="TextBlock_PointerExited" 
          Background="Transparent"> 
       <TextBlock Text="{Binding}" VerticalAlignment="Center" HorizontalAlignment="Center"/> 
      </Grid> 
     </DataTemplate> 
    </GridView.ItemTemplate> 
</GridView> 

<TextBlock x:Name="tb" /> 

코드 :

private void TextBlock_PointerEntered(object sender, PointerRoutedEventArgs e) 
{ 
    Panel root = sender as Panel; 
    var dataObject = root.DataContext; 
    tb.Text = dataObject.ToString(); //displays the currently pointed number in "tb" 
} 

private void TextBlock_PointerExited(object sender, PointerRoutedEventArgs e) 
{ 
    tb.Text = string.Empty; 
} 
+1

OMG! 그렇게 간단하지만 효과적입니다. 나는 ** DataTemplate 내부에서'PointerEntered' 등의 이벤트를 사용할 수 있다는 것을 전혀 몰랐습니다. 그리고 당신의 예제는 더 명확해질 수 없습니다. 감사! – Weissu