2012-08-03 2 views
1

Я начинаю с WPF, но не могу найти способ наследования из окна в другое окно.Наследовать окно в другое окно xaml

Теперь я запускаю новое приложение на WinForm, в котором я создал общее окно для добавления/редактирования/удаления/конспектирования объектов. Таким образом, в окнах есть несколько кнопок, заголовок, нижний колонтитул, цвет фона и т. Д. Затем я наследую эти окна к окнам для каждого объекта.

Так что, ничего не делая, у меня есть полная страница готова.

Мой вопрос: могу ли я сделать то же самое с WPF? Потому что я хочу прекратить делать приложение с Winform и начать работать с WPF.

Я трачу много времени на поиск, как это сделать в WPF, но я не могу найти способ. Я видел, что WPF не может наследовать внешний вид.

Я видел пользовательские элементы управления или пользовательские элементы управления, но мне нужно поместить элементы внутри элемента управления, которые я наследую, чтобы завершить экран.

Может ли кто-нибудь мне помочь?

Спасибо!

+0

Что вы подразумеваете под «Мне нужно положить вещи внутри элемента управления, который я наследую, чтобы завершить экран»?? –

+0

Я имею в виду, что я определяю, например, окно для создания объекта с заголовком и некоторыми кнопками внизу (например, создавать, отменить, обновить, применить и т. Д.). И затем я наследую это окно для создания клиента, продукта, компании и т. Д.Итак, у меня есть информация вверху и внизу экрана, и мне нужно добавить ярлыки и текстовые поля, которые мне нужны для этой конкретной сущности. Спасибо за ваш комментарий – Faabass

ответ

0

WPF не позволяет визуально наследовать таким образом.

Что я предлагаю сделать, это создать собственный класс, который наследует от Window, и добавить RelayCommand свойства для разных кнопок, которые вы хотите отображать на всех окнах. Попросите вызов RelayCommand Виртуальные методы, которые выполняют необходимую логику.

Затем создайте пользовательский ControlTemplate (сделайте его по умолчанию, чтобы любое пользовательское окно использовало этот tempalte) для вашего пользовательского Window, который включает в себя раздел заголовка или нижнего колонтитула, в котором есть кнопки, которые вы хотите включить во все окна. Вы можете затем добавить DataBind эти кнопки в Command s в свой пользовательский класс окна (возможно, через привязку RelativeSourceSelf).

Этот подход должен позволить вам создавать окна с «общим» нижним колонтитулом, но с другим контентом. Если вы довольно новичок в WPF, это может показаться немного сложным. Другим подходом было бы создать UserControl, который реализует функциональность Header/Footer и вызывает события для действий кнопки, а затем просто отбрасывает их на все ваши окна. Но, на мой взгляд, этот подход не позволяет использовать возможности WPF, в частности, бесконтрольный характер контроля.

2

Да, это возможно. Вы должны объявить новый класс общественности (на самом деле это, чтобы обеспечить оба класса имеют один и тот же охват)

public class newWindow : Window 

Затем унаследован от нового класса

public partial class TestClass : newWindow 

Затем измените XAML файл TestClass:

<base:newWindow> 
xmlns:local="clr-namespace:YourNameSpace" 
xmlns:base="clr-namespace:YourNameSpace" 
</base:newWindow> 
+0

Это сработало для меня. Благодаря! – Val

Смежные вопросы