У меня есть приложение, которое читает в XAML файлы динамически, как это:Почему добавление сборки в файл XAML дает ошибку?
StreamReader sr = new StreamReader(pathAndFileName);
this.Content = XamlReader.Load(sr.BaseStream);
В одном из файлов XAML, которая загружается в (все они имели свой код позади удален), это работает:
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:DynamicXaml123">
<StackPanel Margin="10" HorizontalAlignment="Left">
<TextBox Height="23" Width="100" Text="{Binding FirstName}" />
<TextBox Height="23" Width="100" Text="{Binding LastName}" />
<TextBox Height="23" Width="100" Text="{Binding Age}" />
<local:FieldEmailView></local:FieldEmailView>
</StackPanel>
</UserControl>
Но это дает ошибку «Тег« FieldEmailView »не существует в пространстве имен XML« пространство имен clr: DynamicXaml123; assembly = DynamicXaml123 ».
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:DynamicXaml123;assembly=DynamicXaml123">
<StackPanel Margin="10" HorizontalAlignment="Left">
<TextBox Height="23" Width="100" Text="{Binding FirstName}" />
<TextBox Height="23" Width="100" Text="{Binding LastName}" />
<TextBox Height="23" Width="100" Text="{Binding Age}" />
<local:FieldEmailView></local:FieldEmailView>
</StackPanel>
</UserControl>
Если я уйду из ссылки сборки, то он получает ошибку
Message=""XmlNamespace", "Assembly" oder "ClrNamespace"
при чтении в XAML.
Почему я не могу включить ссылку на сборку здесь, что мне нужно изменить/проверить, чтобы это сработало?
Есть ли другой способ сделать это? У меня есть другое подобное приложение, которое, как я знаю, не разворачивается в GAC, который работает с этой ссылкой на сборку. Как это могло быть, есть ли другой путь? –
Я не думаю, что вам нужно поставить сборку в GAC ... это, вероятно, будет работать, если вы просто загрузите сборку в AppDomain –
@Thomas. Это правда, я сознательно использовал формулировку «в одну сторону», чтобы попытаться не создавайте впечатление, что это единственный способ. @Edward - если ваша модель уже загружена в домен приложения, вам не нужно забирать ее из GAC. Просто убедитесь, что вы загрузили ссылку на сборку перед загрузкой XAML. –