C#UWP GridView数据模板绑定问题
我已经创建了一个GridView。我已经为它设置了一个ItemTemplateC#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 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;
}