首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Silverlight中的VisualState继承

Silverlight中的VisualState继承
EN

Stack Overflow用户
提问于 2010-05-12 17:53:08
回答 2查看 727关注 0票数 4

我正在编写一个继承自RadioButton的控件,除了显示图像和隐藏默认的圆之外,它不会做任何更壮观的事情。

我还不知道的一件事是,我是否必须在我的ControlTemplate中重新实现所有的VisualStates,或者我可以简单地将它们放在一个空元素中,然后继承它们?

我的XAML在下面,the original RadioButton is on MSDN

代码语言:javascript
复制
<Style TargetType="local:ImageRadioButton">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="local:ImageRadioButton">
                <Grid>
                    <vsm:VisualStateManager.VisualStateGroups>
                        <vsm:VisualStateGroup x:Name="CommonStates">
                            <vsm:VisualState x:Name="Normal"/>
                            <vsm:VisualState x:Name="MouseOver">
                                <Storyboard/> <!-- mouseover -->
                            </vsm:VisualState>
                            <vsm:VisualState x:Name="Pressed" />
                            <vsm:VisualState x:Name="Disabled"/>
                            <!-- TODO -->
                        </vsm:VisualStateGroup>
                        <vsm:VisualStateGroup x:Name="CheckStates">
                            <vsm:VisualState x:Name="Checked">
                                <Storyboard/>
                                <!-- checked -->
                            </vsm:VisualState>
                            <vsm:VisualState x:Name="Unchecked"/>
                        </vsm:VisualStateGroup>

                        <vsm:VisualStateGroup x:Name="FocusStates">
                            <vsm:VisualState x:Name="Focused" />
                            <vsm:VisualState x:Name="Unfocused" />
                        </vsm:VisualStateGroup>
                        <vsm:VisualStateGroup x:Name="ValidationStates">
                            <vsm:VisualState x:Name="Valid"/>
                            <vsm:VisualState x:Name="InvalidUnfocused" />
                            <vsm:VisualState x:Name="InvalidFocused" />
                        </vsm:VisualStateGroup>
                    </vsm:VisualStateManager.VisualStateGroups>

                    <ContentPresenter/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-12 20:17:45

你不需要来重新实现视觉状态,但它们也不会被“继承”。如果为新控件指定新的DefaultStyleKey,则不会从原始样式中获得任何内容。

如果希望新控件修改其外观以表示其当前状态,例如它是否具有焦点或是否处于选中状态,则需要包括一组适当的VisualStateGroups。然后在VisualState元素中包含适当的动画,以更改新版本的按钮UI。

票数 2
EN

Stack Overflow用户

发布于 2010-05-13 01:41:15

豁出去了。如果替换模板,则必须提供所有模板,包括可视状态。使用Blend可以轻松编辑默认模板的副本。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2817655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档