Question

J'ai une application qui lit les fichiers XAML de manière dynamique, comme ceci:

StreamReader sr = new StreamReader(pathAndFileName);
this.Content = XamlReader.Load(sr.BaseStream);

Dans l'un de ces fichiers XAML qui sont chargés (leur code derrière ont tous été supprimés), cela fonctionne:

<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>

Mais ceci donne l’erreur "La balise 'FieldEmailView" n’existe pas dans l’espace de nommage XML' espace de nom 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>

Si je laisse de côté la référence d'assemblage, l'erreur sera générée

Message=""XmlNamespace", "Assembly" oder "ClrNamespace"

lors de la lecture du XAML.

Pourquoi ne puis-je pas inclure la référence de l'Assemblée ici, que dois-je changer / vérifier pour que cela fonctionne?

Était-ce utile?

La solution

Lorsque vous chargez cela, vous devez pouvoir résoudre les références d'assemblages. En d’autres termes, cet assemblage doit être disponible pour que l’application puisse être référencée. Une solution consiste à déployer DynamicXaml123 sur le GAC.

Autres conseils

Je suggère de sortir du moniteur de processus et de voir où. Votre application recherche DynamicXaml123. Consultez également le journal de fusion . J'imagine que le comportement de XamlSerializer est différent si vous incluez l'espace de noms, mais cette modification affecte l'emplacement d'exécution de votre assemblage par le moteur d'exécution.

Remarque, il peut y avoir un certain décalage entre la configuration de fuslogvw et le moment où il commence réellement à se connecter.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top