una sirve que plantillas plantilla pasos para modificar guardar ejemplos crear como c# xaml windows-phone-8.1 win-universal-app

c# - sirve - pasos para crear una plantilla en word



Muestre un elemento de IU(Imagen, Texto) en la Plantilla de datos de una Vista de lista al hacer clic en el elemento de Vista de lista (1)

En primer lugar, debería haber utilizado el evento ItemClick o SelectionChanged en lugar de Tapped. Usaré el evento SelectionChanged . Puede usar VisualTreeHelper para obtener el control de imagen del elemento seleccionado

private void cacheList_SelectionChanged(object sender, SelectionChangedEventArgs e) { foreach (var item in e.AddedItems) { ListViewItem selectedItem = (sender as ListView).ContainerFromItem(item) as ListViewItem; Image image = FindElementInVisualTree<Image>(selectedItem); if(image!=null) { image.Visibility = Visibility.Visible; } } } private T FindElementInVisualTree<T>(DependencyObject parentElement) where T : DependencyObject { var count = VisualTreeHelper.GetChildrenCount(parentElement); if (count == 0) return null; for (int i = 0; i < count; i++) { var child = VisualTreeHelper.GetChild(parentElement, i); if (child != null && child is T) return (T)child; else { var result = FindElementInVisualTree<T>(child); if (result != null) return result; } } return null; }

Actualice para hacer que la imagen del elemento no seleccionado se contraiga

private void cacheList_SelectionChanged(object sender, SelectionChangedEventArgs e) { foreach (var item in e.AddedItems) { ListViewItem selectedItem = (sender as ListView).ContainerFromItem(item) as ListViewItem; Image image = FindElementInVisualTree<Image>(selectedItem); if (image != null) { image.Visibility = Visibility.Visible; } FindListViewItem((sender as ListView), selectedItem); } } private void FindListViewItem(DependencyObject parent,ListViewItem selectedItem) { var count = VisualTreeHelper.GetChildrenCount(parent); for (int i = 0; i < count; i++) { var child = VisualTreeHelper.GetChild(parent, i); if (child is ListViewItem && (child as ListViewItem) != selectedItem) { Image unselectedimage = FindElementInVisualTree<Image>(child); if (unselectedimage != null) { unselectedimage.Visibility = Visibility.Collapsed; } } else { FindListViewItem(child, selectedItem); } } }

El código de plantilla de datos

<DataTemplate x:Key="CachelvTemplate"> <Grid Margin="21,3,21,3" Height="60"> <Grid.ColumnDefinitions> <ColumnDefinition Width="auto"/> <ColumnDefinition Width="*"/> <ColumnDefinition Width="auto"/> </Grid.ColumnDefinitions> <TextBlock Text="{Binding}" HorizontalAlignment="Stretch" VerticalAlignment="Center" Foreground="Black" FontSize="20"/> <Image Grid.Column="2" Source="/Assets/Icons/selectedCache.png" HorizontalAlignment="Right" VerticalAlignment="Center" Stretch="Fill" MaxHeight="20" MaxWidth="20" Opacity="0" /> </Grid> </DataTemplate>

Código de vista de lista

<ListView x:Name="cacheList" Tapped="cacheList_ItemClick" ItemTemplate="{StaticResource CachelvTemplate}" />

Ahora, al hacer clic en un elemento de la lista, me gustaría cambiar la opacidad de la imagen (desde la Plantilla de datos) para convertirla en una, o de alguna manera hacerla visible. Solo para el elemento de vista de lista seleccionado.