2017-03-17 12 views
0

クリックイベントがuwpで発生した場合、gridviewデータテンプレート内のImageコントロールのソースを変更する必要があります。車画像をクリックすると、この画像を修正してブランドロゴを表示する必要があります。私は、そのコードを成功:その投稿のc# - gridviewで画像コントロールを検索および変更しましたselecteditem

<controls:AdaptiveGridView x:Name="AdaptiveGridViewControl" 
           animations:ReorderGridAnimation.Duration="350" 
           Margin="0,12,0,0" 
           ItemHeight="200" 
           DesiredWidth="200" 
           SelectionMode="Single" 
           IsItemClickEnabled="True" 
           ItemClick="GridView_ItemClick" 
           > 

     <controls:AdaptiveGridView.ItemTemplate> 
      <DataTemplate x:DataType="data:MyData"> 
         <StackPanel Orientation="Horizontal"> 
          <controls:ImageEx x:Name="ImageExControl" 
             MaxHeight="200" 
             IsCacheEnabled="True" 
             Source="{x:Bind carsPictures}" 
             Stretch="Fill" 
             PlaceholderSource="/Assets/placeholder_cover.jpg" 
             PlaceholderStretch="Uniform"/> 
         </StackPanel> 
      </DataTemplate> 
     </controls:AdaptiveGridView.ItemTemplate> 
    </controls:AdaptiveGridView> 

ありがとう:How to access a Control inside the data template in C# Metro UI in the code behind、 を私はFindChildControl指定(DependencyObjectの制御、文字列CTRLNAME)メソッドを使用することができます。背後にあるコードでは

private void GridView_ItemClick(object sender, ItemClickEventArgs e) 
    { 
     var newData = (MyData)e.ClickedItem; 

     ImageEx ex = FindChildControl<ImageEx>(this, "ImageExControl") as ImageEx; 
     ex.Source = newData.brandLogo; 
    } 

問題は、このGridViewのは、30台の映像が含まれており、クリックイベントが発生したときにのみ、最初のImageコントロールが変更されています。私は、クリックされたImageコントロールを変更するためにAdaptiveGridView.SelectedItemを使用する方法を知らない。

答えて

0

ClickedになっているGridViewItemを取得する必要があります。その結果、クリックしたアイテムの画像を変更できます。 ItemClickイベントを以下のように変更してください。

private void GridView_ItemClick(object sender, ItemClickEventArgs e) 
{ 
    GridViewItem item = myGridView.ContainerFromItem(e.ClickedItem) as GridViewItem; 
    MyData newData = (MyData)e.ClickedItem; 
    ImageEx ex = FindChildControl<ImageEx>(item, "ImageExControl") as ImageEx; 
    ex.Source = newData.brandLogo; 
} 

希望がこれに役立ちます。

+1

おかげさまで完璧! – keledrame

関連する問題