在WPF中为自定义控件设置继承属性的默认值

时间:2013-09-06 14:23:43

标签: wpf xaml

我正在尝试子类化一个图表工具,它上面有一个XAxis属性,类型为IAxis(所以你可以给它一个NumericAxis,DateAxis等)。正常使用基本图表时,我可以像这样设置XAx:

<chart:BaseChart>
   <chart:BaseChart.XAxis>
      <chart:NumericAxis VisibleRange="{Binding XAxisVisibleRange}" AxisAlignment="Bottom"/>
   </chart:BaseChart.XAxis>
</chart:BaseChart>

但是,我不确定在自定义控件中设置此默认轴的最佳做法是什么,如果它在XAML中,在C#代码隐藏中等等?通过在我的子类的构造函数中设置XAxis属性/绑定,我可以从代码隐藏中获得它。这有效,我只是不知道这是否是“正确”的方式。

作为WPF的新手,我不知道在XAML中为自定义控件在哪里/如何做,如果它甚至是正确的位置。它应该进入控制模板,风格还是其他地方?我尝试在风格中做一个Setter,但没有用(它编译但我没有看到任何轴)。从控件模板中,它无法识别<chart:BaseChart.XAxis>。 AxisAreas定义为顶部右下角和左下角,如果我只是将<chart:NumericAxis etc/>放在其中一个,那么轴确实显示在那里,但是这感觉不正确,因为它实际上并没有设置XAxis属性BaseChart,加上它绕过NumericAxis对象上的AxisAlignment属性,并明确地将轴放在我放入轴代码的AxisArea中。

就像我说的那样,我确实从代码隐藏中解决了这个问题,我只是想确保我能以最好的方式做到这一点。任何帮助将非常感谢,提前感谢!

1 个答案:

答案 0 :(得分:0)

请查看MSDN上的Control Authoring Overview页面,以获得问题的完整答案。

但是,简而言之,对于CustomControl,您应该在名为Themes的应用程序根目录中创建一个文件夹。您应该将名为Generic.xaml的XAML文件添加到此文件夹中,并且应该为ControlTemplate添加CustomControl

对于UserControl,您只需将Style添加到页面的UserControl.Resources部分即可。