http://schemas.microsoft.com/winfx/2006/xaml/presentation definition
Beim erstellen einer neuen WpfApplication-Projekt in Visual Studio erhalten Sie folgenden XAML-Code. Kopieren und einfügen der URL http://schemas.microsoft.com/winfx/2006/xaml/presentation in den browser, ich hatte erwartet, finden Sie in der XSD-Datei definition, allerdings bekomme ich eine Fehlermeldung. Warum?
Dank.
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
</Grid>
</Window>
- Haben Sie auf diesen link klicken? "Die gesuchte Ressource wurde entfernt, hatte seinen Namen geändert, oder ist vorübergehend nicht verfügbar.", es sieht aus wie es hat sich seit verschoben, da deine version von visual studio 2010 veröffentlicht wurde
- möglich, Duplikat der Wo ist der Speicherort der schema-Datei http://schemas.microsoft.com/winfx/2006/xaml/presentation? - (Der erste Kommentar in diesem scheint einen lokalen Speicherort, von nutzen sein kann)
- Beachten Sie, dass die XML-Namespaces definiert, die durch eine URL, sondern die URL muss nicht zwangsläufig auf die tatsächliche XSD (oder etwas für diese Angelegenheit). Solange die Zeichenfolge, die ihn einzigartig und der gleiche string verwendet wird, die von allen beteiligten mit der XML ist es in Ordnung.
- Bedeutet es, dass ich schemas.heute.ist.sunny? Welchen Sinn hat das?
- Ja, Sie können. Alle ein xmlns tut, ist identify was namespace zu verwenden. Die Tatsache, dass es manchmal/oft ist eine URL, die auf ein schema ist eine Konvention, aber ist nicht notwendig für die Funktionsweise von Namensräumen. Alles, was benötigt wird für die letzteren ist, dass wir alle den gleichen string zurück, wenn wir reden über den gleichen namespace.
- Ich habe die meisten von Ihnen, aber niemand zeigen Sie auf eine tatsächliche Datei. Statt 'manchmal/oft' würde ich das nie sagen...
- Das ist nicht wahr, ändern
http://schemas.microsoft.com/winfx/2006/xaml/presentation
zuhttp://schemas.apple.com/winfx/2006/xaml/presentation
die Anwendung nicht mehr übersetzen! - Das ist, weil der compiler hat eine interne Zeichenfolge, die Sie verwendet, um zu finden, die XAML-Code in deine XML. Es tut im wesentlichen
document.getElementsByTagNameNS("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "Window")
. Durch ändern des Namensraums in Ihrer XML -, Sie habe sichergestellt, dass der compiler nicht finden können, die XAML mehr. Deshalb sagte ich in meinem ersten Kommentar "solange die Zeichenfolge, die ihn einzigartig und die gleiche Zeichenfolge verwendet wird, die von allen beteiligten Parteien mit der XML ist es gut". Wenn Sie würden ändern Sie die Zeichenfolge in den compiler - (keine realistische option hier, aber zu anderen Zeiten ist es), würde es wieder funktionieren.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist die meisten wpf-Entwickler weiß, wie es funktioniert aber wenn Sie gehen, um zu erklären, es ist zu viel schwieriger .. unten ist mein Versuch ... aufgrund der Vereinfachung ist es zu groß, aber ich hoffe, wenn Sie bis zum Ende Lesen, werden Sie verstehen, wie die definition, was funktioniert ..
Szenario:
Ich bin ein wpf-Anfänger-Entwickler und Suche für eine wpf-spinner auf goggle. ich bekam einen link von font.genial.wpf .. so fing ich an, es zu versuchen. unten geschriebene code im Dokument hinzufügen, der spinner ..
Wow toll .... Es funktioniert Prima !!! ...
Plötzlich!! ich entdecke, dass ich Hinzugefügt eine Linie gibt
Nicht so etwas wie
dann, wie visual studio wusste, welche
dll
enthalten die ImageAwesome Klasse!!! ... Ich Hinzugefügt, nurFontAwesome.WPF.dll
über nuget ..nichts anderes habe ich.. keine weitere xsd-oder xml-Datei ist da.. Die schema-link(http://schemas.fontawesome.io/icons/) nicht verfügbar ist ...was dann??...Merkwürdig!!
Aber nach 1 Stunden landete ich mit untenstehenden code..
Den wahrnehmbaren Teil ist
fa:ImageAwesome
undfa:CssClassNameConverter
- Klassen... Sie sind ausdifferent namespace
(mit code, hinter dem ich schon überprüft es).. und ich habe nicht angegeben, eine zusätzliche Zeile zur Angabe derFontAwesome.WPF
oderFontAwesome.WPF.Converters
namespace.. dann, wie die Magie passiert!! ..Lösung:
Also habe ich den Quellcode heruntergeladen von font.genial.wpf .. und begann die Suche nach dem text
http://schemas.fontawesome.io/icons/
da ... und endlich fand ich die folgenden Zeilen inassembly.cs
der Schrift.genial.wpf-Projekt..Ist und das ganze Ding (the magic trick!!) mir offenbart ..
In
assembly.cs
Datei der Komponente definiert diehttp://schemas.fontawesome.io/icons/
namespace .. also, wenn ich fontawesome.wpf dll ... visual studio erhielt namespace-definition mit Spiegelbild .. und so wie vs weiß, wo diefa tag refers to
... So ist dies, wie es gelöst zu mir... 🙂Theorie
Einem namespace-URI (eine URN oder eine URL), aber ein URI ist nicht immer eine URL. Der URI verwendet für namespaces ist gedacht, um Sie eindeutig zu identifizieren-Namen zu verhindern, kollidierte. Die XML-Namespaces Arbeitsgruppe an der Zeit, entschlossen zu nutzen eine Technik, die bereits wissen, um Dinge eindeutig zu identifizieren: - URIs.
Als Ergebnis, viele Leute denken, es sollte eigentlich etwas zeigen real. Gelegentlich, das stimmt, aber mehr ist es oft nicht, und es ist nicht so gemeint. Es ist ein identitifier, nicht ein Lage.
Im Fall des schemas, ist es kann verwendet werden, um den Ziel-namespace ist der Namensraum, muss in Dokumenten verwendet werden, müssen validiert gegen das schema. Erhalten Sie die schema -, Sie werden müssen Fragen Sie den Verkäufer. In diesem Fall wird das schema gefunden werden kann, der an einem Ort ähnlich oder gleich
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas
, suchenwpfe.xsd
(allerdings, um die Dinge zu verwirren mehr, Microsoft hat beschlossen, erstellen Sie einen alias für den Ziel-namespace, der ist, warum Sie nicht sehen, die denselben namespace, die Sie erwähnt).