Как сослаться на Canvas в другом файле XAML?

У меня проблема с выяснением того, как ссылаться на Canvas в другом файле XAML в моем проекте.

Например, есть объект Canvas, содержащий некоторые метки, изображения, называемые MyLayout и хранящиеся в MyLayout.xaml.

Я хочу использовать этот холст в главном окне приложения в Window.xaml. Как это может быть сделано? Будет несколько макетов, которые необходимо будет загрузить в окно.

Весь XAML находится внутри проекта и скомпилирован, его нельзя загрузить из файла.

Как сослаться на объект Canvas в файле MyLayout.xaml в Window.xaml?

Это может быть код XAML, VB.NET или даже C#.

Я искал часы, пытаясь понять это. Как использовать объект из одного XAML-файла в другом? Как это делается?

Заранее спасибо. Я надеюсь, что кто-то знает, как это сделать.


person Community    schedule 27.01.2009    source источник


Ответы (2)


Вы думали об использовании UserControl или ControlTemplate?

person bryanbcook    schedule 27.01.2009

Поскольку ваш объект Canvas на самом деле является подклассом Canvas, этот подкласс определен в вашей сборке. Вы можете ссылаться на объекты, определенные в других пространствах имен, добавляя еще один атрибут xmlns к корневому объекту XAML.

Что-то вроде этого (при условии, что ваш подкласс Canvas называется MyCanvas в пространстве имен MyNamespace):

<Window x:Class="MyNamespace.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:MyNamespace">
    <local:MyCanvas />
</Window>

Вы можете установить свойства класса MyCanvas, как и любого другого объекта.

person Andy    schedule 29.01.2009