我收到一个奇怪的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声明中,我收到了错误
名称“AxisBase`2”在命名空间“using:project.Views.Controls.Chart.Axis”中不存在
我认为'2'来自AxisBase
有两个与之相关的泛型类型的事实。
然后在DateDoubleAxis
的声明中我收到错误:
'project.Views.Controls.Chart.Axis.DateDoubleAxis'的基类与其他部分的声明不同
伴随着具有讽刺意味的resharper警告
基本类型'AxisBase'已在其他部分中指定
我意识到我在尝试从我自己的用户控件扩展时做了一些有点奇怪的事情,但我认为在这种情况下它是有意义的,至少有一些用户建议它{{3} }。
有人能指出我可能做错了吗?
答案 0 :(得分:2)
我刚刚意识到你正在使用
x:TypeArguments="system:DateTime, system:Double"
在你的XAML中。不幸的是,UWP不支持此功能。另请注意,XAML中的Double
应定义为x:Double
而不是system:Double
。但无论如何,这与此案无关。
我在项目中使用此功能的唯一方法是创建一个UserControl
(带有XAML文件)作为任何内容的 base ,然后创建一个泛型类从那里继承的em>一旦泛型类到位,我就会根据它创建一堆具有不同类型的派生类。例如,在你的情况下,你会有
基地UserControl
:AxisBase
<UserControl x:Class="xxx.AxisBase"
public partial class AxisBase : UserControl
{
public AxisBase()
{
InitializeComponent();
}
}
通用课程:AxisOfT
public class AxisOfT<TX, TY> : AxisBase { }
派生类:DateDoubleAxis
public class DateDoubleAxis : AxisOfT<DateTime, double> { }