WPF - 页面导航



>我正在VS 2012中创建WPF应用程序。我的主窗口充当导航到的页面的页眉/页脚包装器。在我的页脚中,我添加了自定义的后退/前进按钮,但我希望它们的可见性根据CanGoBack和CanGoForward属性而改变。

我可以创建隐藏/显示按钮的 C# 例程,但该函数在初始化时只运行一次。我需要在每次加载新页面时触发这些函数。有什么想法吗?

Is是一个简单的例子,我使用网格作为页面,并使用网格数组来保存网格的实例。我希望这对您的情况有所帮助。

XAML:

<Window x:Class="PageNavigation.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid Name="page1" Background="Beige">
            <Label VerticalAlignment="Center" HorizontalAlignment="Center">Page1</Label>
        </Grid>
        <Grid Name="page2" Background="Blue" Visibility="Hidden">
            <Label VerticalAlignment="Center" HorizontalAlignment="Center">Page2</Label>
        </Grid>
        <Grid Name="page3" Background="Green" Visibility="Hidden" >
            <Label VerticalAlignment="Center" HorizontalAlignment="Center">Page3</Label>
        </Grid>
        <Grid Name="page4" Background="Cyan" Visibility="Hidden">
            <Label VerticalAlignment="Center"   HorizontalAlignment="Center">Page4</Label>
        </Grid>
        <Button Name="btn_Next" HorizontalAlignment="Right" VerticalAlignment="Bottom" Content="Next" Click="btn_Next_Click"/>
        <Button Name="btn_Previous" HorizontalAlignment="Left" VerticalAlignment="Bottom" Content="Previous" Click="btn_Previous_Click"/>
    </Grid>
</Window>

C#:

public partial class MainWindow : Window
    {
        Grid[] pages;
        int activePage = 0;
        public MainWindow()
        {
            InitializeComponent();
            pages = new Grid[4];
            pages[0] = this.page1;
            pages[1] = this.page2;
            pages[2] = this.page3;
            pages[3] = this.page4;
        }
        void Next() {
            if (activePage<pages.Length-1)
            {
                pages[activePage].Visibility = Visibility.Hidden;
                activePage++;
                pages[activePage].Visibility = Visibility.Visible;
            }    
        }
        void Previous()
        {
            if (activePage > 0)
            {
                pages[activePage].Visibility = Visibility.Hidden;
                activePage--;
                pages[activePage].Visibility = Visibility.Visible;
            }
        }
        private void btn_Previous_Click(object sender, RoutedEventArgs e)
        {
            Previous();
        }
        private void btn_Next_Click(object sender, RoutedEventArgs e)
        {
            Next();
        }
    }

相关内容

  • 没有找到相关文章

最新更新