Search code examples
xamluwpuwp-xamlwinui

UWP ContainerFromItem returning null for a GridViewItem


I have following GridView

<GridView 
    x:Name="gird_view" 
    Grid.Column="1" 
    ItemsSource="{x:Bind workers}"
    ContainerContentChanging="gird_view_ContainerContentChanging">
    <GridView.ItemContainerStyle>
        <Style TargetType="GridViewItem">
            <Setter Property="Margin" Value="10"/>
        </Style>
    </GridView.ItemContainerStyle>
    <GridView.ItemTemplate>
        <DataTemplate x:DataType="models:Worker">
            <local:WorkerControl ViewModel="{x:Bind}"/>
        </DataTemplate>
    </GridView.ItemTemplate>
</GridView>

I am trying following code

private async void gird_view_ContainerContentChanging(ListViewBase sender, ContainerContentChangingEventArgs args)
{
    GridViewItem item = args.ItemContainer as GridViewItem;

    await Task.Delay(5000);
    var _Container = gird_view.ContainerFromItem(item);
    if (_Container == null)
    {
        return;
    }
}

_Container is always coming as null with or without delay. Any idea why that might be?


Solution

  • GridViewItem is the container:

    GridViewItem item = args.ItemContainer as GridViewItem;
    

    To get the data object for that container, i.e. your Worker object, you should use the Item property:

    Worker worker = args.Item as Worker;
    

    There should be no need to use the ContainerFromItem in this case.