Pergunta

Eu tenho um aplicativo que lê em XAML dinâmica de arquivos como este:

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

Em um desses arquivos XAML que é carregado em (todos eles tiveram o seu código por trás removido), isso 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>

Mas isso dar o erro "A tag 'FieldEmailView' não existe no namespace XML 'clr-namespace: DynamicXaml123; montagem = 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 eu deixar de fora a referência de montagem, em seguida, ele recebe o erro

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

na leitura do XAML.

Por que não posso incluir a referência Assembléia aqui, o que eu tenho que alterar / verificar para chegar a este trabalho?

Foi útil?

Solução

Quando você carregar este, você precisa ser capaz de resolver as referências de montagem. Em outras palavras, esta assembléia deve estar disponível para que o aplicativo de referência contra -. Uma maneira de fazer isso seria para implantar DynamicXaml123 ao GAC

Outras dicas

Eu sugiro sair processo de monitor e vendo onde seu aplicativo está procurando dynamicxaml123. Verifique o registo de fusão também. Eu acho que o comportamento na XamlSerializer é diferente se você incluir o namespace do que quando você não faz, e que a mudança está afetando onde o tempo de execução está picando em torno de sua montagem.

Note, pode haver algum atraso entre a criação de fuslogvw e quando ele realmente começa a registar.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top