在WPF中创建装饰器控件



我用的是VB。Net 2012 With WPF

代码
Public Class UserControl1
Inherits Adorner
Sub New(AdornedElement As UIElement)
    MyBase.New(AdornedElement)
    'Err Found Here
End Sub
Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
End Sub
End Class

错误:基类System.Windows.Controls。为类UserControl1指定的UserControl不能与基类System.Windows.Documents不同。

请帮

。...编辑:添加UserControl的XAML Code

<UserControl x:Class="UserControl1"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <TextBlock Text=" This is Child Control " HorizontalAlignment="Center" VerticalAlignment="Center"/>
    <Button Grid.Row="1" Content="Close Child Control " HorizontalAlignment="Center" VerticalAlignment="Center" Click="Button_Click"/>
</Grid>
</UserControl>

编辑:错误。添加UserControl到Adorner

Error   6   Base class 'System.Windows.Controls.UserControl' specified for class 'UserControl1' cannot be different from the base class 'System.Windows.Documents.Adorner' of one of its other partial types.   D:Data - 2012TempWPF AdornersWPF AdornersobjDebugUserControl1.g.i.vb 42  14  WPF Adorners
Error   1   Cannot add content to an object of type "Adorner".  D:Data - 2012TempWPF AdornersWPF AdornersUserControl1.xaml 8   5   WPF Adorners
Error   2   Type 'Adorner' is not usable as an object element because it is not public or does not define a public parameterless constructor or a type converter.   D:Data - 2012TempWPF AdornersWPF AdornersUserControl1.xaml 1   2   WPF Adorners
Error   3   The type 'Adorner' does not support direct content. D:Data - 2012TempWPF AdornersWPF AdornersUserControl1.xaml 8   5   WPF Adorners
Error   4   Cannot add content to object of type 'System.Windows.Documents.Adorner'. Line 8 Position 6. D:Data - 2012TempWPF AdornersWPF AdornersUserControl1.xaml 8   6   WPF Adorners

正如@Robert所建议的。

当您在相应的XAML文件后面的代码中更改继承时,您必须更改XAML中的标记。

您需要在XAML中进行如下更改:(参见第一个标签和最后一个标签)

<Adorner x:Class="UserControl1"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         d:DesignHeight="300" d:DesignWidth="300">
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>

    <TextBlock Text=" This is Child Control " HorizontalAlignment="Center" VerticalAlignment="Center"/>
    <Button Grid.Row="1" Content="Close Child Control " HorizontalAlignment="Center" VerticalAlignment="Center" Click="Button_Click"/>
</Grid>
</Adorner>

更新

Adorner是一个抽象类,所以你不能直接使用它,相反,你必须在此之外创建派生类,然后从本地Adorner类派生UserControl或使用任何现有的派生Adorner类。

查看此主题的代码工程文章。

查看控件的XAML -它会显示基类是UserControl。

最新更新