Domanda

Ho un'applicazione che legge dinamicamente i file XAML in questo modo:

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

In uno di quei file XAML che vengono caricati (a tutti è stato rimosso il codice), funziona:

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

Ma questo dà l'errore " Il tag 'FieldEmailView' non esiste nello spazio dei nomi XML 'clr-namespace: 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>

Se tralascio il riferimento all'assembly, viene visualizzato l'errore

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

durante la lettura in XAML.

Perché non posso includere qui il riferimento dell'Assemblea, cosa devo cambiare / controllare per farlo funzionare?

È stato utile?

Soluzione

Quando lo carichi, devi essere in grado di risolvere i riferimenti di assieme. In altre parole, questo assembly deve essere disponibile affinché l'applicazione possa fare riferimento: un modo per farlo sarebbe distribuire DynamicXaml123 nel GAC.

Altri suggerimenti

Suggerirei di uscire monitor di processo e di vedere dove la tua app sta cercando dynamicxaml123. Controlla anche il log di fusione . Immagino che il comportamento in XamlSerializer sia diverso se includi lo spazio dei nomi rispetto a quando non lo fai, e tale modifica influisce sul runtime del runtime per il tuo assembly.

Nota, potrebbe esserci un certo ritardo tra la configurazione di fuslogvw e l'avvio effettivo della registrazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top