Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何制作一些ListView项目';灰显';不可选择?_C#_Windows Store Apps_Winrt Xaml_Windows 8.1 Universal - Fatal编程技术网

C# 如何制作一些ListView项目';灰显';不可选择?

C# 如何制作一些ListView项目';灰显';不可选择?,c#,windows-store-apps,winrt-xaml,windows-8.1-universal,C#,Windows Store Apps,Winrt Xaml,Windows 8.1 Universal,ListView控件中的某些项是可选择的,并且具有普通文本。 但是,有些项目虽然作为项目包含在ListView中,但将不可选择/不可查找并“灰显” 在Windows应用商店应用程序中,我们可以在列表视图中选择单个/多个/无项目。但是,在代码中,如何使某些索引中的某些项不可选择/不可查找并“灰显” 我设法在某个索引处访问ListView的项: myListView.ItemContainerGenerator.ContainerFromIndex(i) 但我找不到任何选项来自定义其选定的事件处理

ListView控件中的某些项是可选择的,并且具有普通文本。 但是,有些项目虽然作为项目包含在ListView中,但将不可选择/不可查找并“灰显”

在Windows应用商店应用程序中,我们可以在列表视图中选择单个/多个/无项目。但是,在代码中,如何使某些索引中的某些项不可选择/不可查找并“灰显”

我设法在某个索引处访问ListView的项:

myListView.ItemContainerGenerator.ContainerFromIndex(i)
但我找不到任何选项来自定义其选定的事件处理程序。
你知道怎么做到吗

在单一选择模式下。 首先向绑定类型的类添加一个布尔属性,该类定义如下所示的可单击项

  class TestClass
  {
    Boolean IsClickAllowed{get;set;}
    string name{get;set;}
  }
var TempList=new List<>()
                    {
                        new TextClass(){IsClickAllowed=false,name="First Item"},
                        new TextClass(){IsClickAllowed=true,name="Second Item"},
                        new TextClass(){IsClickAllowed=false,name="Third Item"},
                    };
                    MyList.ItemsSource=TempList;
然后创建TestClass类型的源列表,并将其设置为Listview的itemssource,如下所示

  class TestClass
  {
    Boolean IsClickAllowed{get;set;}
    string name{get;set;}
  }
var TempList=new List<>()
                    {
                        new TextClass(){IsClickAllowed=false,name="First Item"},
                        new TextClass(){IsClickAllowed=true,name="Second Item"},
                        new TextClass(){IsClickAllowed=false,name="Third Item"},
                    };
                    MyList.ItemsSource=TempList;

希望有帮助。

我找到了一个解决方案:

我已经重写了
ListView
控件并创建了一个StripedListView。然后,通过覆盖
PrepareContainerForItemOverride
,该控件负责在创建
ListViewItem
控件后设置该控件,您可以修改背景色并将
ItemListView设置为false。isEnabled
选项为false:

public class StripedListView : ListView
    {          
        protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
        {
            base.PrepareContainerForItemOverride(element, item);
            var listViewItem = element as ListViewItem;
            if (listViewItem != null)
            {
                var index = IndexFromContainer(element);

                if (Words.arrayW[index].Length > 0)
                {
                    listViewItem.Foreground = new SolidColorBrush(Colors.Black);

                }
                else
                {
                    listViewItem.Foreground = new SolidColorBrush(Colors.Gray); 
                    listViewItem.IsEnabled = false;
                }
            }
        }
    }
在Xaml中:

<controls:StripedListView x:Name="letterListView" ItemsSource="{Binding}">   
      <controls:StripedListView.ItemTemplate>  
         <DataTemplate>                           
                etc...              
         </DataTemplate>
      </controls:StripedListView.ItemTemplate>
</controls:StripedListView>

您是使用单选模式还是多选模式进行尝试?单选模式检查我的答案它可能会解决您的问题。谢谢您的回答@Rohit!我使用
isEnabled