不要重复自己 - XAML和WPF

时间:2013-10-14 23:20:39

标签: c# wpf xaml windows-phone-8 dry

事实证明,我在我的应用程序的所有XAML页面中都有完全相同的代码部分。第一段代码负责转换:

<toolkit:TransitionService.NavigationInTransition>
    <toolkit:NavigationInTransition>
        <toolkit:NavigationInTransition.Backward>
            <toolkit:SlideTransition Mode="SlideLeftFadeIn" />
        </toolkit:NavigationInTransition.Backward>
        <toolkit:NavigationInTransition.Forward>
            <toolkit:SlideTransition Mode="SlideLeftFadeIn" />
        </toolkit:NavigationInTransition.Forward>
    </toolkit:NavigationInTransition>
</toolkit:TransitionService.NavigationInTransition>
...

第二个描述了应用栏:

<phone:PhoneApplicationPage.ApplicationBar>
        <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
...

有没有办法可以帮助避免这种代码重复?据我所知,这不能用样式或数据模板来解决,还是可以呢?

1 个答案:

答案 0 :(得分:2)

导航位可应用于所有页面,无需使用样式进行代码复制。这是我用于其中一个项目的过渡样式。这应放在App.xaml文件

<Style x:Key="TransitionPageStyle" TargetType="phone:PhoneApplicationPage">
        <Setter Property="toolkit:TransitionService.NavigationInTransition">
            <Setter.Value>
                <toolkit:NavigationInTransition>
                    <toolkit:NavigationInTransition.Backward>
                        <toolkit:TurnstileTransition Mode="BackwardIn"/>
                    </toolkit:NavigationInTransition.Backward>
                    <toolkit:NavigationInTransition.Forward>
                        <toolkit:TurnstileTransition Mode="ForwardIn"/>
                    </toolkit:NavigationInTransition.Forward>
                </toolkit:NavigationInTransition>
            </Setter.Value>
        </Setter>
</Style>

然后,您可以通过插入此代码段

将此样式应用于所需的任何页面
Style="{StaticResource TransitionPageStyle}"

到你的手机:PhoneApplicationPage标签通常位于任何xaml的最顶层。 对于Application bar标签,我认为它确实需要重复,因为它有点像控件本身即。它有自己的属性和方法。