Во-первых, xaml или нет, это все классы. Поэтому все, что наследуется от другого класса (то есть Window), должно делать это как любой другой класс.
namespace SomeNamespace
{
public sealed class MyWindow : Window
{
public object SomeNewProperty {get;set;}
}
}
xaml - это совсем другой тип сериализации с собственным набором правил. Но он по-прежнему сериализован XML, и поэтому все должно быть прослеживаемо обратно к его оригинальному типу.
Как xaml делает это через объект в XML, называемый «пространства имен». Они хорошо согласуются с нашим пониманием пространств имен как разработчиков C#, поскольку мы должны сопоставить пространство имен XML в пространстве имен в нашем приложении, чтобы сериализатор xaml мог соответствовать элементу XML с CLR-типом.
Xaml использует несколько различных способов согласования этих пространств имен. Один выглядит как URL-адрес и определяется атрибутом сборки (например, «xmlns =» http://microsoft.com/whatevs »). Это работает, когда сборка является внешней по отношению к той, которую вы пишете. В вашем случае, вам придется использовать другой метод идентификации вашего пространства имен. Это специализированное пространство имен XML анализируется сериализатором xaml для идентификации пространства имен и содержит сборку ваших классов. Оно идет по форме «пространство имен clr: SomeNamespace; сборка .. = SomeAssembly»вы можете опустить немного сборки, если тип находится в текущей сборке
Чтобы поставить все эти вместе с приведенным выше примером, вы можете создать экземпляр вашего нового окна, как это:
<t:MyWindow
xmlns:t="clr-namespace:SomeNamespace"
xmlns="the standard microsoft namespace here"
t:OmitOtherStuffBecauseThisIsAnExampleLol="true">
Вам нужно наследовать код позади и t он xaml из вашего базового класса. Для этого в xaml вам также понадобится ссылка на пространство имен/двоичный класс, в котором находится класс, прежде чем он позволит вам его объявить. Синтаксис - это что-то вроде 'xmlns myPrefix = pathtoclass', а затем' ' –