在基础xaml中实现click事件并在WPF中的基类中处理它

时间:2016-05-11 10:50:02

标签: wpf events inheritance override

我是WPF的新手。我正在创建一些示例类,以便快速创建最终项目。我将CustomControl1作为基类,Generic作为基础xaml,wInherit作为派生的xaml和类。我的基本窗口的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">-->
<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事件。如果我在基础xaml中将Click="btnClose_Click"添加到btnClose,我应该在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中使用继承用于窗口和事件吗?

1 个答案:

答案 0 :(得分:1)

我建议你不要继承CustomControl1类。您为Generic xaml创建一个usercontrol并将其包含在派生的xaml中。