Я новичок в WPF. Я создаю некоторые примеры классов, чтобы быстро создать окончательный проект. У меня есть CustomControl1
как базовый класс, Generic
как базовый xaml и wInherit
как производный xaml и класс. XAML моего базового окна находится здесь:реализовать событие click в базе xaml и обрабатывать его в базовом классе в WPF
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Palayeshgah">
<!--x:Class="Palayeshgah.CustomControl1">-->
<Window.Resources>
<Style x:Key="btnClose" TargetType="{x:Type Button}" >
<Setter Property="Template">
...
</Setter>
</Style>
</Window.Resources>
...
<Grid>
<Button Style="{StaticResource btnClose}" Name="btnClose" Content="" HorizontalAlignment="Left" Margin="274,0,0,0" VerticalAlignment="Top" Width="18" Height="21"/>
</Grid>
Вот мой полученный XAML:
<ns:CustomControl1 x:Class="Palayeshgah.PL.Base.wInherit"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ns="clr-namespace:Palayeshgah"
Title="Inheritance Sample" Height="300" Width="300" Background="Wheat" MouseEnter="CustomControl1_MouseEnter"/>
Вот мой базовый класс:
public class CustomControl1 : Window
И это мой производный класс :
public partial class wInherit : CustomControl1
Эти коды отлично показывают базовый дизайн. Но я должен переопределить событие click для моей кнопки. Если я добавлю Click="btnClose_Click"
в btnClose
в базовый xaml, я должен intrtodood класса в Generic.xaml
. Так же, как показано ниже:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Palayeshgah"
x:Class="Palayeshgah.CustomControl1">
Тогда я получаю сообщение об ошибке, как:
Missing partial modifier on declaration of type 'Palayeshgah.CustomControl1'; another partial declaration of this type exists
.
добавить partial
к CustomControl1
, а затем ошибка изменилась, как показано ниже:
Partial declarations of 'Palayeshgah.CustomControl1' must not specify different base classes
Я вишу здесь.
Я не забыл про btnClose_Click
. Здесь есть событие click в базовом классе:
protected virtual void btnClose_Click(object sender, RoutedEventArgs e)
{
Close();
}
Вы можете спросить, почему я отделяю базовый xaml от базового класса. Ответ: я не мог показать базовый дизайн с этим подходом.
Может ли кто-нибудь показать мне, как использовать наследование для окна и событий в WPF с любым подходом?
Я добавил новый 'UserControl' вместо' CustomControl1' и 'Generic' и вызывается с' '. «BaseUserControl» - это новый базовый пользовательский элемент управления. Я состыковал это в новом окне, и это работает как шарм. Благодарим вас за краткую подсказку. –