WPF自定义控件如何定义可用的子节点

小灰狼 2021-07-09 17:46:45

比如我要做一个曲线图的控件,会有两个Y坐标轴,一个X坐标轴,而每个坐标轴又有刻度,类模型大概是

// 刻度
class Scale {
// 省略属性和方法定义
}
// Y轴
class YAxis {
    public Scale[] Scales{ get; set; }
    public double MaxValue { get; set; }
    public double MinValue { get; set; }
    // 省略其它属性和方法定义
}
// X轴
public XAxis {
    public Scale[] Scales{ get; set; }
    public double MaxValue { get; set; }
    public double MinValue { get; set; }
    // 省略其它属性和方法定义
}
// 曲线图
class MyChartLine {
    public static DependencyProperty ShowRightYAxisProperty = DependencyProperty.Register("ShowRighttYAxis", typeof(bool), typeof(MyChartLine));
    public static DependencyProperty LeftYAxisProperty = DependencyProperty.Register("LeftYAxis", typeof(YAxis), typeof(MyChartLine));
    public static DependencyProperty RightYAxisProperty = DependencyProperty.Register("RightYAxis", typeof(YAxis), typeof(MyChartLine));

    // 简单属性
    public bool ShowRightYAxis { 
        get{
            return (bool)GetValue(ShowRightYAxisProperty);
        } 
        set{
            SetValue(ShowRightYAxisProperty, value);
        }
    }
    // 对象属性,省略依赖属性的写法
    public YAxis LeftYAxis { get; set; }
    public YAxis RightYAxis { get; set; }
    public XAxis XAxis { get; set; }
    // 省略其它属性和方法定义
}

然后,我希望在使用这个控件时,对两个Y轴和X轴,以及控件的属性可以这样写:

<local:MyChartLine ShowRightYAxis="True">
    <LeftYAxis MinValue="0" MaxValue="100">
        <Scales>
            <Scale ...... />
            <Scale ...... />
        </Scales>
    </LeftYAxis>
    <RightYAxis MinValue="-100" MaxValue="500">
        <Scales>
            <Scale ...... />
            <Scale ...... />
        </Scales>
    </rightYAxis>
</local:MyChartLine>

请问应该要怎么做?

...全文
1164 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灰狼 2021-07-12
  • 打赏
  • 举报
回复

没人会吗?

小灰狼 2021-07-12
  • 打赏
  • 举报
回复

周未没人吗,今天周一了,自己顶一下

小灰狼 2021-07-09
  • 打赏
  • 举报
回复

强调一下,控件这么写肯定不合理,这一点上我有自知之明!我只是拿它来举个例子来描述我急于知道的东西,这个控件设计存在的问题请各位牛人忽略!
谢谢!

8,737

社区成员

发帖
与我相关
我的任务
社区描述
WPF/Silverlight相关讨论
社区管理员
  • WPF/Silverlight社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧