【问题标题】:Creating Adorner Control in WPF在 WPF 中创建装饰器控件
【发布时间】:2014-08-04 21:37:47
【问题描述】:

我正在使用带有 WPF 的 VB.Net 2012

代码

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

错误:为类“UserControl1”指定的基类“System.Windows.Controls.UserControl”不能与其其他部分类型之一的基类“System.Windows.Documents.Adorner”不同。

请帮忙

。 . . . 编辑:添加 UserControl 的 XAML 代码

<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 - 2012\Temp\WPF Adorners\WPF Adorners\obj\Debug\UserControl1.g.i.vb 42  14  WPF Adorners
Error   1   Cannot add content to an object of type "Adorner".  D:\Data - 2012\Temp\WPF Adorners\WPF Adorners\UserControl1.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 - 2012\Temp\WPF Adorners\WPF Adorners\UserControl1.xaml 1   2   WPF Adorners
Error   3   The type 'Adorner' does not support direct content. D:\Data - 2012\Temp\WPF Adorners\WPF Adorners\UserControl1.xaml 8   5   WPF Adorners
Error   4   Cannot add content to object of type 'System.Windows.Documents.Adorner'. Line 8 Position 6. D:\Data - 2012\Temp\WPF Adorners\WPF Adorners\UserControl1.xaml 8   6   WPF Adorners

【问题讨论】:

    标签: wpf vb.net adorner


    【解决方案1】:

    正如@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 类。

    查看thiscodeproject 关于此主题的文章。

    【讨论】:

    【解决方案2】:

    查看您的控件的 XAML - 它会说基类是 UserControl。将其更改为 Adorner 以与您的 VB 代码保持一致。

    【讨论】:

    • 添加了 XAML 代码。请查看相同
    • 是的,看到 XAML 中的第一个单词了吗?最后一个?改变那些:)
    猜你喜欢
    • 1970-01-01
    • 2014-02-13
    • 2012-08-02
    • 1970-01-01
    • 2017-11-16
    • 2013-02-06
    • 2016-11-24
    • 2020-09-05
    • 2018-07-27
    相关资源
    最近更新 更多