1

次のように XAML ファイルを動的に読み取るアプリケーションがあります。

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

読み込まれる XAML ファイルの 1 つ (すべてコード ビハインドが削除されている) では、次のように動作します。

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

アセンブリ参照を省略すると、エラーが発生します

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

XAML を読み取るとき。

ここにアセンブリ参照を含めることができないのはなぜですか?これを機能させるには、何を変更/確認する必要がありますか?

4

2 に答える 2

1

これを読み込むときは、アセンブリ参照を解決できる必要があります。つまり、このアセンブリは、アプリケーションが参照できるようにする必要があります。これを行う 1 つの方法は、DynamicXaml123 を GAC にデプロイすることです。

于 2009-09-16T12:29:34.320 に答える
0

プロセス モニターを取得して、アプリが dynamicxaml123 を探している場所を確認することをお勧めします。融合ログも確認してください。名前空間を含める場合と含めない場合では、XamlSerializer での動作が異なると思います。その変更は、ランタイムがアセンブリのどこに突っ込んでいるかに影響を与えています。

fuslogvw をセットアップしてから実際にログを開始するまでには、多少のタイムラグがあることに注意してください。

于 2009-09-16T12:35:25.077 に答える