gpt4 book ai didi

c# - WPF 控件的自定义基类

转载 作者:太空狗 更新时间:2023-10-29 22:20:28 26 4
gpt4 key购买 nike

我已经为我的项目创建了一个 CustomControl,我将创建更多。所有这些控件都有一些共同点,所以我创建了一个继承自 UserControl 的抽象类。

如果我通过 VisualStudio 创建一个 CustomControl,它也继承自 UserControl,我无法将其切换到我的抽象 UserControl,因为 VisualStudio 将添加一些生成的代码文件。我不想弄乱这些文件。

我可以只创建一个空的代码文件并自己编写所有内容,但我不能使用 XAML(或者我只是不知道如何使用)。

那么如何在不丢失 XAML 的情况下创建具有自定义基类的 CustomControl?

最佳答案

首先,您不能轻松地在 UserControl 类层次结构中使用抽象类——它不适用于设计器(您将收到“无法创建“AbstractBase”的实例”消息)。Windows 窗体曾经有同样的问题,并且有一些解决方法,所有这些都很痛苦。

删除“抽象”后,您应该能够通过在 XAML 定义中包含命名空间来引用您的基类,并像这样更改后面的代码:

<local:AbstractBase x:Class="Test.ConcreteControl"
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"
xmlns:local="clr-namespace:Test"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
</Grid>
</local:AbstractBase>

和:

    /// <summary>
/// Interaction logic for ConcreteControl.xaml
/// </summary>
public partial class ConcreteControl : AbstractBase
{
public ConcreteControl()
{
InitializeComponent();
}
}

这假设您的基类称为“AbstractBase”

关于c# - WPF 控件的自定义基类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6036260/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com