为了账号安全,请及时绑定邮箱和手机立即绑定

UWP Community Toolkit DataGrid 不显示数据

UWP Community Toolkit DataGrid 不显示数据

C#
ibeautiful 2023-05-13 16:05:05
我正在尝试使用来自 ObservableCollection 的数据在 UWP(来自社区工具包包)中加载 DataGrid。显示了从中读取数据的 CSV 文件的标题,但由于某种原因,没有显示任何数据行。我已经通读并尝试了至少 5 或 6 个关于 SO 的问题,所以虽然我知道之前有人问过这个问题,但这些答案似乎没有用。在这一点上,我对自己做错了什么感到茫然。我知道我的代码中有一些错误(很明显,否则它会起作用),但我似乎无法找到它。有人可以看看下面的代码,看看他们是否能发现任何错误吗?注意:我知道数据正在被正确读取,因为 a) 标头显示出来,并且 b) 我遇到了断点并查看了 SpellBook 中的数据,它包含 408 个项目。在此先感谢任何可以提供帮助的人!
查看完整描述

1 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

根据您的要求,我简化了绑定步骤。请检查以下代码。


Xaml代码


<controls:DataGrid

    x:Name="MyDataGrid"

    HorizontalAlignment="Stretch"

    VerticalAlignment="Stretch"

    AlternatingRowBackground="Transparent"

    AlternatingRowForeground="Gray"

    AreRowDetailsFrozen="False"

    AreRowGroupHeadersFrozen="True"

    AutoGenerateColumns="False"

    CanUserReorderColumns="True"

    CanUserResizeColumns="True"

    CanUserSortColumns="False"

    ColumnHeaderHeight="32"

    FrozenColumnCount="0"

    GridLinesVisibility="None"

    HeadersVisibility="Column"

    HorizontalScrollBarVisibility="Visible"

    IsReadOnly="False"

    Loaded="DataGrid_Loaded"

    MaxColumnWidth="400"

    RowDetailsVisibilityMode="Collapsed"

    RowGroupHeaderPropertyNameAlternative="Range"

    SelectionMode="Extended"

    VerticalScrollBarVisibility="Visible"

    >

    <controls:DataGrid.RowGroupHeaderStyles>

        <Style TargetType="controls:DataGridRowGroupHeader">

            <Setter Property="Background" Value="LightGray" />

        </Style>

    </controls:DataGrid.RowGroupHeaderStyles>


    <controls:DataGrid.Columns>

        <controls:DataGridTextColumn

            Binding="{Binding Id}"

            Header="Id"

            Tag="Id"

            />

        <controls:DataGridTextColumn

            Binding="{Binding Title}"

            Header="Title"

            Tag="Title"

            />

        <controls:DataGridComboBoxColumn

            Binding="{Binding Link}"

            Header="Link"

            Tag="Link"

            />

        <controls:DataGridTextColumn

            Binding="{Binding Type}"

            Header="Type"

            Tag="Type"

            />

        <controls:DataGridTextColumn

            Binding="{Binding Remark}"

            Header="Remark"

            Tag="Remark"

            />

        <controls:DataGridTextColumn

            Binding="{Binding Time}"

            Header="Time"

            Tag="Time"

            />

    </controls:DataGrid.Columns>

</controls:DataGrid>

模型类


public class Item

{

    public string Id { get; set; }

    public string Title { get; set; }

    public string Link { get; set; }

    public string Type { get; set; }

    public string Remark { get; set; }

    public string Time { get; set; }

}

数据处理


private ObservableCollection<Item> Items;

private void DataGrid_Loaded(object sender, RoutedEventArgs e)

{

    using (var reader = new StreamReader("Assets\\Archive.csv",true))

    using (var csv = new CsvReader(reader))

    {

        var records = csv.GetRecords<Item>();

        Items = new ObservableCollection<Item>(records);           

    }


    MyDataGrid.ItemsSource = Items;           

}


查看完整回答
反对 回复 2023-05-13
  • 1 回答
  • 0 关注
  • 74 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信