【问题标题】:C# UWP GridView DataTemplate bindings issueC# UWP GridView DataTemplate 绑定问题
【发布时间】:2017-07-20 23:45:21
【问题描述】:

我创建了一个 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 bool isSelected;
    public bool IsSelected
    {
        get { return isSelected; }
        set { isSelected = value; OnPropertyChanged(); }
    }

我正在改变它:

    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...但每次结果都相同。

任何线索我在这里做错了什么?

【问题讨论】:

  • 你能张贴一张截图/GIF,说明到底发生了什么吗?这有助于更好地理解问题

标签: c# gridview binding uwp datatemplate


【解决方案1】:

您似乎正在使用此数据模板禁用 UI 虚拟化,因为 Grid 是完全动态调整大小的。尝试显式设置网格的大小以恢复虚拟化。

请参阅https://docs.microsoft.com/en-us/windows/uwp/debug-test-perf/optimize-gridview-and-listview 了解更多信息。

【讨论】:

  • DataTemplate 或 GridView 中的网格?
  • DataTemplate 中的网格
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-13
  • 2020-02-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-23
  • 2011-07-05
  • 2017-06-14
相关资源
最近更新 更多