Warum sollte das Hinzufügen einer Baugruppe in einer XAML-Datei einen Fehler geben?
-
07-07-2019 - |
Frage
Ich habe eine Anwendung, die dynamisch wie dies in XAML liest Dateien:
StreamReader sr = new StreamReader(pathAndFileName);
this.Content = XamlReader.Load(sr.BaseStream);
In einem dieser XAML-Dateien, die in geladen wird (sie alle haben ihren Code hinter entfernt hatte), das funktioniert:
<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>
Aber dies gibt dem Fehler "Der Tag 'FieldEmailView' existiert nicht in XML-Namespace 'clr-namespace: DynamicXaml123; Montag = 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>
Wenn ich die Montage Referenz auslassen dann wird es den Fehler
Message=""XmlNamespace", "Assembly" oder "ClrNamespace"
, wenn in der XAML zu lesen.
Warum kann ich nicht die Versammlung Bezug hier enthalten, was muss ich ändern / überprüfen Sie diese Arbeit zu bekommen?
Lösung
Wenn Sie dies in laden, müssen Sie in der Lage sein, um die Montage Verweise aufzulösen. Mit anderen Worten, muss diese Anordnung für die Anwendung Referenz zur Verfügung steht gegen -. Einen Weg, dies zu tun, wäre DynamicXaml123 im GAC bereitstellen
Andere Tipps
Ich würde vorschlagen, immer aus Prozessmonitor und zu sehen, wo Ihre App sucht dynamicxaml123. Schauen Sie sich die Fusion log auch. Ich würde vermuten, das Verhalten im XamlSerializer anders ist, wenn Sie den Namespace als enthalten, wenn Sie dies nicht tun, und diese Änderung zu beeinflussen, wo die Laufzeit um für Ihre Montage stößt.
Beachten Sie, kann es einige Verzögerung sein zwischen fuslogvw Einrichtung und wenn es beginnt tatsächlich zu protokollieren.