Опитвам се да получа контейнера на избрания в момента елемент ListView. ContainerFromItem винаги връща null и компилаторът се оплаква, че функцията може да е остаряла.
Някаква идея?
Опитвам се да получа контейнера на избрания в момента елемент ListView. ContainerFromItem винаги връща null и компилаторът се оплаква, че функцията може да е остаряла.
Някаква идея?
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);
}