C#UWP GridView数据模板绑定问题

C#UWP GridView数据模板绑定问题,c#,gridview,binding,uwp,datatemplate,C#,Gridview,Binding,Uwp,Datatemplate,我已经创建了一个GridView。我已经为它设置了一个ItemTemplate <GridView x:Name="gvMain" HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" ItemTemplate="{StaticResource GridTemplate}"

我已经创建了一个GridView。我已经为它设置了一个ItemTemplate

        <GridView x:Name="gvMain"
                  HorizontalAlignment="Stretch" 
                  HorizontalContentAlignment="Stretch"
                  ItemTemplate="{StaticResource GridTemplate}"  
                  AllowDrop="True" 
                  CanDragItems="True" 
                  CanReorderItems="True" 
                  ScrollViewer.VerticalScrollBarVisibility="{Binding gridViewCarsScrollViewVisible, ElementName=carsControl}">

    <DataTemplate x:Key="GridTemplate" x:DataType="models:Car">

        <Grid
              HorizontalAlignment="Stretch"                  
              Background="Transparent"
              Tapped="CarTapped">

                <Border x:Name="borderBackground" 
                    Background="White" 
                    Opacity="{x:Bind IsSelected, Converter={StaticResource TransparencyConverter}, Mode=OneWay}"/>                  

        </Grid>     

    </DataTemplate>
我正在改变它:

    private void CarTapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
    {
        var grid = sender as Grid;
        var car = grid.DataContext as Car;

        car.IsSelected = !car.IsSelected;
    }
例如,gridview中有300辆汽车。问题是,当我开始向下滚动时,绑定会转到将显示的每辆车的IsSelected属性,无论我是向上还是向下……如果我返回到已经“加载”的车,绑定仍会查找属性值。如果有更多属性,那么如果在某个控件上设置了绑定,它将转到每个属性。这使得滚动不可能,因为它是非常起伏的,因为这一点

为什么每当项目滚动到视图中时,绑定都试图获取值? 我尝试使用绑定而不是x:bind,我尝试设置模式:单向、双向、一次…我尝试设置UpdateSourceTrigger=PropertyChanged…但每次都得到相同的结果


你知道我做错了什么吗?

看起来你正在用这个数据模板禁用UI虚拟化,因为网格的大小完全是动态的。尝试显式设置网格大小以恢复虚拟化


有关更多信息,请参阅。

DataTemplate或GridView中的网格?DataTemplate中的网格您可以发布屏幕截图/GIF,以了解具体情况吗?这有助于更好地理解这个问题
    private void CarTapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
    {
        var grid = sender as Grid;
        var car = grid.DataContext as Car;

        car.IsSelected = !car.IsSelected;
    }