【发布时间】:2017-08-16 12:53:51
【问题描述】:
我收到一个奇怪的 XAML 错误,我不明白,希望有人能提供帮助。我正在尝试制作一个能够绘制任何类型数据的通用AxisBase 用户控件。然后我想扩展它以创建一种特定类型的轴,可以在 X 轴上绘制日期并在 Y 轴上翻倍。
DateDoubleAxis.xaml
<axis:AxisBase x:Class="project.Views.Controls.Chart.Axis.DateDoubleAxis"
x:TypeArguments="system:DateTime, system:Double"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:axis="using:project.Views.Controls.Chart.Axis"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:system="using:System">...</axis:AxisBase>
AxisBase.cs
namespace project.Views.Controls.Chart.Axis
{
public class AxisBase<TX, TY> : UserControl {...}
}
DateDoubleAxis.xaml.cs
namespace project.Views.Controls.Chart.Axis
{
public sealed partial class DateDoubleAxis : AxisBase<DateTime, Double> {...}
}
但我遇到了一些奇怪的错误。在DateDoubleAxis 的 xaml 声明中,我得到了错误
命名空间“using:project.Views.Controls.Chart.Axis”中不存在名称“AxisBase`2”
我相信'`2'来自AxisBase 有两个与之关联的泛型类型。
然后在DateDoubleAxis 的声明中出现错误:
“project.Views.Controls.Chart.Axis.DateDoubleAxis”的基类与其他部分声明的不同
伴随着讽刺性的重发警告
基本类型“AxisBase”已在其他部分指定
我意识到我在尝试扩展我自己的用户控件时做了一些奇怪的事情,但我认为在这种情况下这是有道理的,至少有一些用户建议它here。
谁能指出我可能做错了什么?
【问题讨论】:
-
您的
AxisBase不能采用泛型类型,因为它具有 xaml 部分。您应该将其保留为普通用户控件,并将DateDoubleAxis设为DateDoubleAxis<TX, TY>并继承自AxisBase。 -
@JustinXL
AxisBase没有 xaml 组件(我添加了文件名以使其更清晰)。我打算让DateDoubleAxis.xamlsn-p 表明DateDoubleAxis是AxisBase<DateTime, Double>,以模仿DateDoubleAxis.xaml.cs中的类声明。这实际上不是正在发生的事情吗?
标签: c# xaml uwp user-controls