gpt4 book ai didi

wpf 派生自派生控件

转载 作者:行者123 更新时间:2023-12-04 05:27:56 24 4
gpt4 key购买 nike

我想从派生的用户控件派生一个控件,但在解决它的 xaml 时遇到问题。然而,首先是简单的场景。我有一个库 MyControls.dll。在那,我在 .cs 文件中有一个基于“UserControl”的控件,例如

public class MyUserControl : UserControl { ... }

没问题。现在,我想创建从这个派生的第二个(视觉)控件......所以,我在同一个 MyControls.dll 库中分别创建了一个名为 NewFromMyUserControl.xaml.cs 和 NewFromMyUserControl.cs 的新用户控件,例如
public partial class NewFromMyUserControl : MyUserControl { ... }

现在,在 Xaml 中,我有...
<mylib:MyUserControl x:Class="MyControls.SubFolder1.NewFromMyUserControl"
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:mylib ="clr-namespace:MyControls" (blah blah) />
</mylib:MyUserControl>

这没有问题。为简单起见,“MyUserControl”或“NewFromMyUserControl”类中没有实际代码......只是测试派生实现。

现在,问题。我有另一个库“MyBaselineControls.dll”,它具有我想要从...派生的实际用户控件...例如
public class MyBaselineUserControl : UserControl { ... }

现在,我想更改从其他派生的“MyUserControl”,例如
from
public class MyUserControl : UserControl { ... }
to
using MyBaselineControls;
public class MyUserControl : MyBaselineUserControl { ... }

一旦这一行发生变化,编译器就无法说明...

错误 2“MyControls.MyUserControl”不能是 XAML 文件的根,因为它是使用 XAML 定义的。第 1 行位置 19. ... 等等

是否存在从另一个库派生而来的问题?

谢谢

最佳答案

不能从具有 XAML 定义的用户控件派生。只要您不在基类中定义 XAML,就没有问题。关于你的错误的具体信息可以在here中找到.

解决它的一种方法是从 Control 派生。 (或从 Control 派生的另一个类,它不是 UserControl )并为您的基本控件和派生控件定义一个控件模板。 This page准确地解释了从 Control 继承时可以做什么或 UserControl ,以及在决定要从哪些内容中获取时应该考虑哪些内容。

编辑

既然你说的是 MyBaselineUserControlMyUserControl不要定义任何 XAML,事情应该可以工作。我自己试过了,我没有问题。

我建议您确保您的基本用户控件实际上是在没有 XAML 的情况下创建的,即它们应该是使用 创建的。 “添加 --> 类”而不是“添加 --> 用户控制”。

关于wpf 派生自派生控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12979337/

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