Pregunta

Tengo una aplicación que lee en archivos XAML dinámicamente así:

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

En uno de esos archivos XAML que se carga (a todos se les ha eliminado el código), esto funciona:

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

Pero esto da el error " La etiqueta 'FieldEmailView' no existe en el espacio de nombres 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>

Si omito la referencia del ensamblaje, aparece el error

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

al leer en XAML.

¿Por qué no puedo incluir la referencia de la Asamblea aquí? ¿Qué debo cambiar / verificar para que esto funcione?

¿Fue útil?

Solución

Cuando cargue esto, debe poder resolver las referencias de ensamblaje. En otras palabras, este ensamblado debe estar disponible para que la aplicación haga referencia; una forma de hacerlo sería implementar DynamicXaml123 en el GAC.

Otros consejos

Sugeriría salir del monitor de proceso y ver dónde su aplicación está buscando dynamicxaml123. Consulte también el registro de fusión . Supongo que el comportamiento en XamlSerializer es diferente si incluye el espacio de nombres que cuando no lo hace, y ese cambio está afectando el lugar en el que el tiempo de ejecución se está moviendo para su ensamblaje.

Tenga en cuenta que puede haber algún retraso entre la configuración de fuslogvw y cuándo realmente comienza a registrarse.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top