2016-12-22 10 views
0

私はUWPアプリケーションを構築しており、このアプリケーションの特定のページにはListViewがあります。このListViewのItemsSourceをCollectionViewSourceにバインドしているので、グループヘッダーを有効にできます。これは、私がエミュレータまたは実際のハードウェアのいずれかにアプリをデプロイすると完全に動作します。ただし、XAMLデザイナでは、ページに空のリストが表示されます。私はXMLデータセットを使用してアプリケーションの他のページにデザインデータを提供していますが、何らかの理由でこのページでXAMLデザイナーがクラッシュする原因となります。HeaderTemplateデザインデータクラッシュXAMLデザイナー

時にはデザイナーがクラッシュすることもなく、それが起こるとリストアイテムが正しくレンダリングされますが、ヘッダーはすべて拡大縮小され、ページの他のコンテンツと重なって表示されます。デザイナー、それは実行時に問題ありません)。この状態になったときにデザイナーと対話しようとすると、XDesProc.exeプロセスが30%-40%CPUを食べ始め、デザイナーとVisual Studio自体がクラッシュするか、タスク内のプロセスを手動で終了するまで即座にフリーズしますマネージャー。

Windowsイベントビューアで見ると、私は次のスタックトレースを参照してください。

アプリケーション:XDesProc.exe Frameworkのバージョン:v4.0.30319 説明:プロセスが原因未処理の例外に終了しました。 例外情報:Microsoft.VisualStudio.DesignTools.WindowsXamlDesigner.Views.WindowsUIXamlImageHost +でMicrosoft.VisualStudio.DesignTools.WindowsXamlDesigner.Views.WindowsUIXamlImageHost.RenderWorkerでWindows.UI.Xaml.Hosting.XamlUIPresenter.Render()()でSystem.AccessViolationException

でRenderScheduler.OnRender(System.Objectの)[余りは簡潔にするためにトリミングされますが、リクエストに応じて含めることができます]

私が見つけたこと私がd削除する場合:CollectionViewSource ORからソース属性を ListView.GroupStyleセクション全体を削除して、デザイナーがクラッシュすることはなくなりましたが、もちろん元のI (実際には、どのような種類のテキストも表示されません)、後者の場合はヘッダーがなくなります。関連するXAML:

<Page.Resources> 
    <ResourceDictionary> 
     <CollectionViewSource x:Name="GroupedRoomsSource" 
           Source="{x:Bind ViewModel.RoomGroups, Mode=OneWay}" 
           IsSourceGrouped="True" 
           ItemsPath="Rooms" 
           d:Source="{Binding RoomGroups, Source={d:DesignData Source=/SampleData/RoomsViewModelSampleData.xaml}}"/> 
    </ResourceDictionary> 
</Page.Resources> 

<ListView x:Name="RoomList" 
      Grid.Row="0" 
      ItemsSource="{Binding Source={StaticResource GroupedRoomsSource}}"> 
    <ListView.GroupStyle> 
     <GroupStyle HidesIfEmpty="True"> 
      <GroupStyle.HeaderTemplate> 
       <DataTemplate x:DataType="models:RoomGroup"> 
        <TextBlock Text="{x:Bind Header}" 
           Foreground="White" 
           FontSize="24" /> 
       </DataTemplate> 
      </GroupStyle.HeaderTemplate> 
     </GroupStyle> 
    </ListView.GroupStyle> 
    <ListView.ItemTemplate> 
     <DataTemplate x:DataType="models:Room"> 
      <StackPanel> 
       <TextBlock Text="{x:Bind Name}" 
          Foreground="White" /> 
       <TextBlock Text="{x:Bind Team.Name}" 
          Foreground="LightGray" 
          FontSize="10" /> 
      </StackPanel> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

私の質問は単純に、私は間違っていますか? GroupStyle.HeaderTemplateでは、XAMLデザイナーは本当に好きではありませんか?私は、私がページを設計しているときに何かを見ている限り、コントロールのToStringテキストプレースホルダに賛成してデザインデータを取り除いても問題ありません(今は、デザインデータか何もありません。理由は分かりません)。何が間違っているのかを見極めるか、どこに向かうかの方向に私を向けるどんな助けも大いに感謝されます。

私のコードでは、同様の問題に遭遇する可能性が人々のための答えとしてこれを投稿https://github.com/Drakmyth/Hipstr/tree/master/Hipstr.Client/Views/Rooms

答えて

0

での問題のページでhttps://github.com/Drakmyth/Hipstrですべてのオープンソースです。私が知る限り、XAMLデザイナーは、単にCollectionViewSourceを使用するときにデザインデータをサポートしていません。それは正しく処理されず、そうする際に非常に不安定になります。私はVS2017でこれをもう一度試しましたが、改善はありませんでした。私は設計データを使用しないことに頼ってきました。ありがたいことに、VS2017がXAMLの編集と継続をサポートしているため、設計データはこれまでと同じほど重要ではありません。

関連する問題