不要重复自己 - XAML 和 WPF

本文关键字:XAML WPF 自己 | 更新日期: 2023-09-27 18:35:15

事实证明,我在应用程序的所有 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">
...

有没有一种方法可以帮助避免这种代码重复?据我了解,这不能用样式或数据模板解决,或者可以吗?

不要重复自己 - XAML 和 WPF

导航位可以使用 Style 应用于所有页面,而无需重复代码。这是我用于其中一个项目的过渡样式。这应该放在你的 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的最顶部。至于应用程序栏标签,我相信它确实需要重复,因为它有点像控件本身,即。它有自己的属性和方法。