我的数据来自ObservableCollection有时只显示在我的ListView。如果我重新启动应用程序,数据显示正常。有时,当我离开页面并返回时,数据有时会显示,而其他时间则不显示。这似乎是随机的。UWP ListView只显示数据有时
这里是我的XAML代码:
<ScrollViewer Grid.Row="2" Margin="0,42,0,0">
<Grid>
<ListView ItemsSource="{x:Bind collection, Mode=OneWay}" HorizontalAlignment="Left" Margin="0,0,0,0" VerticalAlignment="Top" IsItemClickEnabled="True" SelectionChanged="MySelectionChanged" Visibility="Visible">
<ListView.ItemTemplate>
<DataTemplate x:DataType="local:ObjectName">
<TextBlock Text="{x:Bind Data0, Mode=OneWay}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<ListView ItemsSource="{x:Bind collection, Mode=OneWay}" HorizontalAlignment="Left" Margin="375,0,0,0" VerticalAlignment="Top" SelectionMode="None" Visibility="Visible">
<ListView.ItemTemplate>
<DataTemplate x:DataType="local:ObjectName">
<TextBlock Text="{x:Bind Data1, Mode=OneWay}"/>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</ScrollViewer>
我尝试了所有应该显示的数据做的Debug.WriteLine()和调试输出每一次成功打印它。在ListView上显示这些数据时只有一个问题。
编辑:这里是对应xaml.cs代码:
private ObservableCollection<ObjectName> collection;
private List<ObjectName> sorted;
private ObjectName clicked = new ObjectName();
public MainPage()
{
GetSave();
this.InitializeComponent();
}
private async void GetSave()
{
DataStorage ds = new DataStorage();
await ds.DeserializeObjectAsync();
collection = ds.ObjectName;
if (collection != null)
{
sorted = new List<ObjectName>(collection);
sorted.Sort((x, y) => string.Compare(x.Data0, y.Data0));
collection = new ObservableCollection<ObjectName>(sorted);
}
}
我的逻辑之前和之后尝试的InitializeComponent(),并且它给相同的结果。
请问您可以添加更多关于您的'收藏'的代码吗?它是如何看起来像?你如何/何时实例化/初始化它? –
我已将所需代码编辑到OP中。 :) – Ryukori