Я уже некоторое время пытаюсь разобраться в этой проблеме, и я просто в замешательстве.Я создал тип UserControl (отредактированный ниже), который пытаюсь сгенерировать и сериализовать из фонового потока.
Фоновый поток, генерирующий элемент управления, помечен как STA и использует поток памяти для передачи элемента управления.Однако элемент управления содержит шаблон данных в разделе UserControl.Resources, который вызывает ошибки при десериализации.
Разве невозможно передать пользовательский элемент управления, содержащий ресурс, между потоками без определения ресурсов в словаре внешних объединенных ресурсов?
код: UserControl:
<UserControl x:Class="WPF_Base.Example">
<UserControl.Resources>
<DataTemplate DataType={x:Type Example2}>
<Example2View />
</DataTemplate>
</UserControl.Resources>
<Grid>
<StackPanel>
<ItemsControl ItemSource="{Binding GetExamples}" />
</StackPanel>
</Grid>
</UserControl>
ThreadCode (представлен в виде одного потока):
System.IO.MemoryStream streamer = new System.IO.MemoryStream();
var testExample = new WPF_Base.Example();
var test = System.Windows.Markup.XamlWriter.Save(testExample);
var test2 = new System.IO.StringReader(test);
var test3 = System.Xml.XmlReader.Create(test2);
var test4 = (WPF_Base.TestExample)System.Windows.Markup.XamlReader.Load(test3); //Exception thrown here about key already existing in the dictionary
РЕДАКТИРОВАТЬ: элементы управления создаются и встроены в другойЭто связано с тем, что пользователь может загружать файл, содержащий много фрагментов данных (элементы управления находятся в шаблоне MVVM), каждый из которых представлен в виде представления на экране.Во время этого процесса я хотел бы, чтобы пользовательский интерфейс был отзывчивым и не блокировался.Я думаю, я мог бы пошатнуться, когда элементы управления отображаются на экране, а не все сразу, так как это будет основной горлышком бутылки с видами.