为什么 gridview 展开时就像它有数据一样,但不显示数据?



数据良好,我可以在列表框中成功显示数据,但是当我尝试在网格视图或列表视图中执行此操作时,我会得到这些结果。我觉得这里很小。

我已经设置了两种方式,并在文本框上更新属性源,但仍未显示可见数据。我知道它具有数据,因为它像我在此屏幕截图中所捕获的那样扩展。

leadcauseofdeath class

public class LeadingCausesOfDeath : BasePropertyHandler
{
    public int Year { get; set; }
    public string _113_cause_name { get;set;}
    public string Cause_name { get; set; }
    public string State { get; set; }
    public int Deaths { get; set; }
    public int AgeAdjustedDeathRate { get; set; }
}

XAML视图

<Grid DataContext="{Binding Source={StaticResource HomePageVM}}">
    <StackPanel >
        <NavigationView PaneDisplayMode="Top" IsBackButtonVisible="Collapsed" >
            <NavigationView.MenuItems>
                <NavigationViewItem Content="Family"/>
                <NavigationViewItem Content="History"/>
                <NavigationViewItem Content="About"/>
            </NavigationView.MenuItems>
        </NavigationView>
        <GridView ItemsSource="{Binding Data, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                  IsItemClickEnabled="True"
              IsSwipeEnabled="true"
              SelectionMode="Single"
                  BorderThickness="10" BorderBrush="Blue">
            <GridView.ItemsPanel>
                <ItemsPanelTemplate>
                    <ItemsWrapGrid MaximumRowsOrColumns="4" Orientation="Vertical"/>
                </ItemsPanelTemplate>
            </GridView.ItemsPanel>
            <GridView.ItemTemplate>
                <DataTemplate>
                    <Grid  BorderBrush="Black" BorderThickness="10">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="auto"/>
                            <ColumnDefinition Width="auto"/>
                            <ColumnDefinition Width="auto"/>
                            <ColumnDefinition Width="auto"/>
                        </Grid.ColumnDefinitions>
                        <TextBlock Grid.Column="0" Text="{Binding Cause_name}" />
                        <TextBlock Grid.Column="1" Text="{Binding Year}" />
                        <TextBlock Grid.Column="2" Text="{Binding Deaths}" />
                        <TextBlock Grid.Column="3" Text="{Binding State}" />
                    </Grid>
                </DataTemplate>
            </GridView.ItemTemplate>
        </GridView>
    </StackPanel>
</Grid>

查看模型

 private ObservableCollection<LeadingCausesOfDeath> _data;
    public ObservableCollection<LeadingCausesOfDeath> Data
    {
        get
        {
            return _data;
        }
        set
        {
            _data = value;
            OnPropertyChanged("Data");
        }
    }
    public HomePageVM()
    {
        GetData();
    }
    private async void GetData()
    {
        var service = new ServiceForApi();
        Data = new ObservableCollection<LeadingCausesOfDeath>();
        Data = await service.GetFDAStuff();
        OnPropertyChanged("Data");
    }
    public event PropertyChangedEventHandler PropertyChanged;
    protected virtual void OnPropertyChanged( string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

GridView放入StackPanel是一个坏主意。StackPanel将尽可能多地扩展适合整个内容。因此,GridView确实丢失了自动虚拟化,因为它伸展以适合所有项目。

随着您的ItemsWrapGrid的方向设置为垂直,它可能根本不会扩展...它期望固定高度填充物品并将沿水平方向扩展。

使用带有两个rowdefinitions的网格...首先设置为自动,第二组设置为 *

最新更新