找回密码
 立即注册

QQ登录

只需一步,快速开始

WPF_guy

论坛元老

6

主题

23

帖子

9326

积分

论坛元老

积分
9326

活字格认证微信认证勋章元老葡萄

WPF_guy
论坛元老   /  发表于:2013-4-23 16:27  /   查看:5348  /  回复:4
我的思路是参照官方DEMO中的RuleUserControl.xaml里有一段代码:
    <UserControl.Resources>
        <Style x:Key="ointer" TargetType="c1:C1LinearGaugePointer">
            <Style.Setters>
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="c1:C1LinearGaugePointer">
                            <ath x:Name="Root" Stretch="Fill"
                                  Data="M1,3 C1,1.8954304 1.8954304,1 3,1 L11,1 C12.104569,1 13,1.8954304 13,3 C13,3 8.5457163,13 7.4411469,13 L7.4514785,89.679596 L6.5580759,89.667915 L6.5588531,13 C5.4542832,13 1,3 1,3 z" />
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style.Setters>
        </Style>
    </UserControl.Resources>
    <c1:C1LinearGauge x:Name="gauge"
                           XAxisLocation="0.1" XAxisLength="0.8" YAxisLocation="0.5"
                           PointerWidth="0.05" PointerLength="1" PointerOffset="0"
                           PointerStyle="{StaticResource Pointer}">

该例子通过对Gauge的PointerStyle属性编辑一个自定义的Style就可以实现自定义指针形状。

但将上述方法移植到RadialGauge时,却出现如下报错:
             Template cannot be applied to C1GaugePointer.
             Details: The template part Root is null!

我猜想是不是只定义了指针的形状边框,没有定义指针原点的位置。请高手帮忙指点一下应该如何解决这问题~感激不尽!!

4 个回复

倒序浏览
WPF_guy
论坛元老   /  发表于:2013-4-23 17:37:00
沙发
回复 1楼WPF_guy的帖子

好吧,刚弄了一下,上述的方法是可以在RadialGauge中实现的。之前在Path标签中没有写Name和Strech这两个属性,导致无法显示。。。。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-4-23 19:02:00
板凳
WPF_guy 你好

你的这个问题已经解决了嘛,还是在调试中。
回复 使用道具 举报
WPF_guy
论坛元老   /  发表于:2013-4-24 08:09:00
地板
回复 3楼dof的帖子

已经解决了,参照RuleUserControl.xaml可以实现自定义指针的形状。
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2013-4-24 15:17:00
5#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部