Supposons que je les attributs suivants sur mon assemblage:XmlnsDefinitionAttribute et types ambigus
[assembly: XmlnsDefinitionAttribute("urn:foo", "NS1")]
[assembly: XmlnsDefinitionAttribute("urn:foo", "NS2")]
Alors supposons que j'ai quelques classes dans cette assemblée:
namespace NS1
{
public class Class1 {}
}
namespace NS1
{
public class Class2 {}
}
namespace NS2
{
// Here's the duplicate class name. OK in C#, but ambiguous in XAML
public class Class1 {}
}
Alors supposons que mon XAML est comme ça:
<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:foo="urn:foo"
Title="MainWindow" Height="350" Width="525">
<ListBox>
<foo:Class2 />
<foo:Class1 /> <!-- XAML parser does not like this: Ambiguous type reference -->
</ListBox>
</Window>
Mettre de côté les problèmes de conception avec avoir deux classes ou plus nam est-il possible de fournir la spécificité nécessaire sans recourir à cela?
<Window x:Class="Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:foo="urn:foo"
xmlns:foo2="clr-namespace:NS2;assembly=AssemblyName"
Title="MainWindow" Height="350" Width="525">
<ListBox>
<foo:Class2 />
<foo2:Class1 />
</ListBox>
</Window>
Dans une syntaxe XAML spéciale? Dans un attribut, je peux mettre NS2.Class1
(par exemple XamlClassName("NS2_Class1")
)?
J'apprécie la réponse, mais je veux spécifiquement éviter cela (voir ci-dessus). –
Pour éviter cela (dans plusieurs de vos fichiers XAML): xmlns: foo2 = "espace de noms clr: NS2; assembly = AssemblyName" J'ai proposé ceci (dans l'assemblage): [assembly: XmlnsDefinitionAttribute ("urn: foo2 "," NS2 ")] Cordialement, H.Dolder –