まず、xaml であろうとなかろうと、これらはすべてクラスです。したがって、別のクラス (つまり Window) から継承するものはすべて、他のクラスと同様に継承する必要があります。
namespace SomeNamespace
{
public sealed class MyWindow : Window
{
public object SomeNewProperty {get;set;}
}
}
xaml は、独自のルール セットを持つ別の種類のシリアル化です。しかし、それでもシリアライズされた XML であるため、すべてを元の型まで追跡できる必要があります。
xaml がこれを行う方法は、「名前空間」と呼ばれる XML の機能を使用することです。Xaml シリアライザーが XML 要素を CLR 型と一致させることができるように、XML 名前空間をアプリケーションの名前空間にマップする必要があるため、C# 開発者としての名前空間の理解にうまく適合します。
Xaml は、これらの名前空間を一致させるためにいくつかの異なる方法を使用します。One look like a URL and is defined by an assembly attribute (eg, "xmlns="http://microsoft.com/whatevs"). これは、アセンブリが書き込み中のアセンブリの外部にある場合に機能します。名前空間を識別する別の方法を使用する必要があります. この特殊な XML 名前空間は、名前空間を識別し、クラスのアセンブリを含むために、xaml シリアライザーによって解析されます. これは、"clr-namespace:SomeNamespace;assembly" の形式で行われます。 =SomeAssembly". 型が現在のアセンブリにある場合は、アセンブリ ビットを省略できます。
上記の例をすべてまとめると、次のように新しいウィンドウのインスタンスを作成します。
<t:MyWindow
xmlns:t="clr-namespace:SomeNamespace"
xmlns="the standard microsoft namespace here"
t:OmitOtherStuffBecauseThisIsAnExampleLol="true">