c# - مشاريع الفيجوال بيسك جاهزة



عرض عنصر واجهة مستخدم(صورة، نص) في قالب بيانات قائمة عرض على انقر فوق عنصر عرض القائمة (1)

أولا وقبل كل شيء يجب أن تستخدم إيتمكليك أو سيليكتيونشانجد الحدث بدلا من استغلالها. أنا سوف تستخدم SelectionChanged الحدث. يمكنك استخدام VisualTreeHelper للحصول على عنصر تحكم صورة العنصر المحدد

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;
        }

تم تصغير تحديث لجعل صورة العنصر غير المحددة

 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);
            }

        }
    }

رمز قالب البيانات

 <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>

رمز عرض القائمة

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

الآن على النقر على عنصر القائمة، وأود أن إما تغيير غموض الصورة (من قالب البيانات) لتصبح واحدة، أو بطريقة أو بأخرى جعلها مرئية. فقط لعنصر عرض القائمة المحدد.