2016-10-27 12 views
0

現在選択されているListViewアイテムのコンテナを取得しようとしています。 ContainerFromItemは常にnullを返し、コンパイラはその関数が時代遅れになる可能性があると訴える。ListView Container in UWP

+0

の背後には、あなたはあなたのコードを表示することができますか? –

+0

また、このhttp://stackoverflow.com/questions/33553035/how-to-access-visibility-property-of-the-listboxitemsをご覧ください –

答えて

1

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

素晴らしいです。ありがとうございました。 – phm