在WP8中创建自己的切换按钮?

时间:2012-12-12 23:32:53

标签: c# android wpf windows-phone-7 windows-phone-8

我需要将一个具有小部件的Android应用程序移植到WP8。

为此,我需要创建自己的切换按钮(用户控件)。所以我刚刚创建了一个名为MyToggleButton的Button子类,并使用标准回调来更改图像和按钮文本。

要抓住点击,我使用onMouseEnter,当点击完成后,即moud按钮再次上升我使用onMouseLeave

这可以毫无问题地工作 - 问题是当点击onMouseEnter似乎被稍微延迟调用时,此按钮以最小延迟更改ButtonImage而不是普通按钮(我正在使用Visual Studio Express 2012 with Emulator,因为我还没有真正的手机进行测试)

虽然我发现了在XAML中创建用户控件的其他方法,但是我发现只是简单地使用标准方法的描述方式。我只是不确定,这个最小的延迟来自哪里。

2 个答案:

答案 0 :(得分:0)

在第一种情况下,您可能不应该进行自定义切换。从Android移植应用程序并不意味着您还必须移植其图形。他们根本不共享相同的设计语言。你可能应该坚持原生的WP8切换。

但是,如果您确实要创建自定义复选框/切换,则应检查this。这是为WP7制作的,但它也适用于WP8。

答案 1 :(得分:0)

这是一个使用图像的简化“切换”按钮。基于CheckBox

<Style TargetType="{x:Type CheckBox}" >
            <Setter Property="Template" >
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type CheckBox}">
                        <Grid>
                            <ContentPresenter x:Name="Part_Content" />
                            <Image Name="image" Source="/WpfApplication4;component/Images/avatar63.jpg" />
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsChecked" Value="true" >
                                <Setter TargetName="image" Property="Source" Value="/WpfApplication4;component/Images/imagesCA7JZMMY.jpg"/>
                            </Trigger>
                            <Trigger Property="IsChecked" Value="False" >
                                <Setter TargetName="image" Property="Source" Value="/WpfApplication4;component/Images/avatar63.jpg"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>