ListViewに80以上のアイテムがある新しいビューを読み込んだりレンダリングするときに問題があるUWPアプリケーションを扱っています。私は多くの列(listViewの各項目のプロパティ)を表示する必要があります。私は仮想化について読んだが、このケースでは正しいアプローチであるかどうかはわからない(より大きなデータセットに適しているようだ)。私がやることすべてが、これは私のXAMLコードであるItems = new ObservableCollection<ListModel>(products)
のViewModelでObservableCollectionがクラッシュするUWP
を参考にすることができ任意のスタックトレースまたは何もせずにアプリがクラッシュです:
<ScrollViewer HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto"
Grid.Row="1">
<GridView ItemsSource="{Binding Path=Items, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
Name="NewItemView"
HorizontalAlignment="Stretch"
Margin="0,0,0,0"
Background="White"
Width="{Binding Path=GridWidth, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}">
<GridView.Header>
<Grid Grid.Row="0"
Background="#FF6FC3E8"
BorderBrush="White"
BorderThickness="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
x:Uid="dataVerifiedSubt"
Width="150"
Style="{StaticResource TextBlockTitleProductsListPage}"
x:Name="dataVerified"></TextBlock>
<ListView Grid.Column="1"
Height="100"
VerticalAlignment="Top"
RelativePanel.AlignLeftWith="dataVerified"
SelectionMode="None"
ItemsSource="{Binding Path=ProductFields, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
IsItemClickEnabled="True">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding ProductField.Field_Name}"
Width="150"
Style="{StaticResource TextBlockTitleProductsListPage}"></TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
<interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="ItemClick">
<core:InvokeCommandAction Command="{Binding Path=test}">
</core:InvokeCommandAction>
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
</ListView>
</Grid>
</GridView.Header>
<GridView.ItemTemplate>
<DataTemplate ScrollViewer.HorizontalScrollBarVisibility="Visible"
ScrollViewer.VerticalScrollBarVisibility="Visible">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="150"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<CheckBox HorizontalAlignment="Right"
VerticalAlignment="Center"
IsChecked="{Binding test1, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<ListView Grid.Column="1"
VerticalAlignment="Top"
ItemsSource="{Binding ProductFieldValues, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Width="{Binding Width,ElementName=NewItemView}"
SelectionMode="None"
Style="{StaticResource ProductListTable}"
Name="ProductFieldValuesList">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<Button Command="{Binding Path=DataContext.OpenProductInfo, ElementName=NewItemView}"
CommandParameter="{Binding DataContext.ProductId, ElementName=ProductFieldValuesList}"
Style="{StaticResource ProductListPageTextBlockButton}">
<TextBlock Text="{Binding}" TextWrapping="Wrap"/>
</Button>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
</ScrollViewer>
私がクラッシュした後、これを取得する:
あなたXAMLからおかげ
エラー/例外とは何ですか? –
私はobservableCollectionの割り当てがtryとcatchでラップされていても例外ではありません。これは私がコンソールで得るものです スレッド0x57b0がコード0(0x0)で終了しました。 プログラム '[15992]はコード-1073741189(0xc000027b)で終了しました。ラファエルに感謝します。 – marsalal1014