我有以下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>
我正在尝试遵循代码
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
始终为null,有或没有延迟。知道为什么吗
2条答案
按热度按时间ef1yzkbh1#
GridViewItem
是容器:要获取该容器的数据对象,即你的
Worker
对象,你应该使用Item
属性:在这种情况下不需要使用
ContainerFromItem
。2g32fytz2#
_Container
始终为null,因为ContainerFromItem
方法的参数应该是一个数据模型类。该方法用于根据给定的数据对象得到对应的GridViewItem
。在你的场景中,如果你想得到一个GridViewItem
,你应该像这样使用它:但是我对你的逻辑感到困惑,实际上你已经通过
args.ItemContainer
得到了GridViewItem
。不需要再次调用ContainerFromItem
方法。