2017-01-30 11 views
0

私はWindows 8.1アプリにStackPanelを持っていて、私はMouse-Over機能を追加したいと思います。 私が正しく理解していれば、Windows 8.1のアプリケーションで同様の機能がPointerEntered/PointerExitedです。どのようにして「アイテムの」テキストをTextBlockというような関数で得ることができますか?Windows App 8.1 StackPanelマウスオーバー

編集:私は基本的にTextBlockのハンドルがマウスの上にあるときにそれを取得したいので、プロパティ(テキストなど)を取得または設定できます。

<GridView 
     x:Name="itemGridView" 
     AutomationProperties.AutomationId="ItemGridView" 
     AutomationProperties.Name="Items In Group" 
     TabIndex="1" 
     Grid.RowSpan="2" 
     Padding="120,126,120,50" 
     ItemsSource="{Binding Source={StaticResource itemsViewSource}}" 
     SelectionMode="None" 
     IsSwipeEnabled="false" 
     IsItemClickEnabled="True" 
     ItemClick="ItemView_ItemClick" PointerEntered="itemGridView_PointerEntered"> 
     <GridView.ItemTemplate> 
      <DataTemplate> 
        <Grid Height="110" Width="480" Margin="10"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="Auto"/> 
         <ColumnDefinition Width="*"/> 
        </Grid.ColumnDefinitions> 
         <Border Background="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}" Width="110" Height="110"> 
          <Image x:Name="ImageItemName" Source="{Binding ImagePath}" Stretch="UniformToFill" AutomationProperties.Name="{Binding Title}"/> 
         </Border> 
         <StackPanel x:Name="stackPanel1" Grid.Column="1" VerticalAlignment="Top" Margin="10,0,0,0"> 
          <TextBlock x:Name="ItemTitleText" Text="{Binding Title}" Style="{StaticResource TitleTextBlockStyle}" TextWrapping="NoWrap"/> 
          <TextBlock Text="{Binding Subtitle}" Style="{StaticResource CaptionTextBlockStyle}" TextWrapping="NoWrap"/> 
          <TextBlock x:Name="ItemDescText" Text="{Binding Description}" Style="{StaticResource BodyTextBlockStyle}" MaxHeight="60"/> 
         </StackPanel> 
        </Grid> 
       </DataTemplate> 
      </GridView.ItemTemplate> 
      <GridView.Header> 
      <StackPanel Width="480" Margin="0,4,14,0"> 
       <TextBlock x:Name="TitleTextBlock" Text="{Binding Subtitle}" Margin="0,0,0,20" Style="{StaticResource SubheaderTextBlockStyle}" MaxHeight="60"/> 
       <Image x:Name="imageName" Source="{Binding ImagePath}" Height="400" Margin="0,0,0,20" Stretch="UniformToFill" AutomationProperties.Name="{Binding Title}"/> 
       <TextBlock x:Name="DescTextBlock" Text="{Binding Description}" Margin="0,0,0,0" Style="{StaticResource BodyTextBlockStyle}"/> 
      </StackPanel> 
     </GridView.Header> 
     <GridView.ItemContainerStyle> 
      <Style TargetType="FrameworkElement"> 
       <Setter Property="Margin" Value="52,0,0,2"/> 
      </Style> 
     </GridView.ItemContainerStyle> 
    </GridView> 

答えて

1

は、子要素のUIElementCollectionを取得するプロパティChildrenを使用します。

これは私のC#機能

private void itemGridView_PointerEntered(object sender, PointerRoutedEventArgs e) 
    { 

    } 

と私のXAMLコードです。非常に良い答えだと私の問題の大部分を答える

Panel.Children property. MSDN

private void StackPanel_PointerEntered(object sender, PointerRoutedEventArgs e) 
    { 
     var values = new List<string>(); 
     var sp = sender as StackPanel; 
     if (sp != null) 
     { 
      foreach (var child in sp.Children) 
      { 
       var tb = child as TextBlock; 
       if (tb != null) 
       { 
        values.Add(tb.Text); 
       } 
      } 
     } 
    } 
+0

。私は簡単な質問があります。画像はどうなりますか? Imageとして新しい子供を作成してみましたが、Images.Propertiesを取得しましたが、どれも入手できませんでした。 –

+0

コードを表示してください。 –

+0

私は単純に 'var tb = child as TextBlock;'を 'var tb = child as Image;'に置き換えました。 'StackPanel'の画像を取得しようとしました。すべてのプロパティは利用可能ですが、すべてが返された 'null' –

関連する問題