UWP中的ListView容器

本文关键字:容器 ListView 中的 UWP | 更新日期: 2023-09-27 18:15:12

我试图获得当前选定的ListView项目的容器。ContainerFromItem总是返回null,编译器会抱怨这个函数可能已经过时了。

任何想法?

UWP中的ListView容器

ContainerFromItem总是返回null。

ItemsControl。ContainerFromItem方法可以获取指定项的容器。例如,我们可以从ListView中选定的项获取ListViewItem容器。如果你得到null,可能项目没有容器存在,或者你的代码有问题。

我试图获得当前选择的ListView项目的容器。

下面是获取当前选择的ListViewItem的容器的完整演示。XAML代码:

<ListView
    Name="CListView"
    Margin="10"
    HorizontalAlignment="Center"         
    ItemsSource="{x:Bind categories}"
    SelectionChanged="CListView_SelectionChanged">
    <ListView.ItemTemplate>
        <DataTemplate x:DataType="local:Category">
            <StackPanel             
                Background="{x:Bind backgroundcolor}"
                Orientation="Horizontal">
                <TextBlock                           
                    FontSize="17"
                    FontWeight="Bold"
                    Text="{x:Bind Name}" />
            </StackPanel>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

背后的代码
  ObservableCollection<Category> categories = new ObservableCollection<Category> { };
  public ListViewContainer()
  {
      this.InitializeComponent();
      categories = new ObservableCollection<Category>
      {
          new Category {Name="name1",details="color1" ,backgroundcolor="#D90015"},
          new Category {Name="name2",details="color2" ,backgroundcolor="#DC1C17"},
          new Category {Name="name3",details="cplor3",backgroundcolor="#DE3A17" },
          new Category {Name="name3",details="color4",backgroundcolor="#E25819" }
      };
  } 
  private void CListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
  {
      var  container = CListView.ContainerFromItem(CListView.SelectedItem);
      ListViewItem item = container as ListViewItem;
      System.Diagnostics.Debug.WriteLine(item.ActualHeight);
  }