ListView контейнер в UWP

Опитвам се да получа контейнера на избрания в момента елемент ListView. ContainerFromItem винаги връща null и компилаторът се оплаква, че функцията може да е остаряла.

Някаква идея?


person phm    schedule 27.10.2016    source източник
comment
Можете ли да покажете вашия код?   -  person Salah Akbari    schedule 27.10.2016
comment
Също така разгледайте това stackoverflow.com/questions/33553035/   -  person Salah Akbari    schedule 27.10.2016


Отговори (1)


ContainerFromItem винаги връща нула.

ItemsControl.ContainerFromItem може да получи контейнера за посочения елемент. Например, можем да получим ListViewItem контейнер от избрания елемент в ListView. Ако имате нула, може би елементът няма контейнер, съществува или нещо не е наред с вашия код.

Опитвам се да получа контейнера на избрания в момента елемент 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);
  }
person Sunteen Wu    schedule 28.10.2016
comment
Работи чудесно. Благодаря ти. - person phm; 28.10.2016