c# - WPF 框架 - 使用按钮加载页面的正确方法

标签 c# wpf xaml

我有一个 WPF 应用程序,我想在其中使用按钮将页面加载到框架中。我想知道这是否是最优雅的方式。

最好我想在 XAML 中加载所有页面,但我没有成功,

我尝试使用:

<Button Name="StationButton" Content="Stations" Command="GoToPage" CommandParameters="View/StationPage.xaml"/>

但是按钮被禁用了,我找不到启用它们的方法。 所以更程序化的解决方案似乎如下。

MainWindow.xaml 包含:

    <Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Border Grid.Column="0" BorderBrush="Gray" BorderThickness="1" Margin="3">
        <StackPanel Margin="5">
            <StackPanel.Resources>
                <Style TargetType="Button">
                    <Setter Property="Margin" Value="0,2"/>
                </Style>
            </StackPanel.Resources>
            <Button Name="StationButton" Content="Stations" Click="Button_Click"/>
            <Button Name ="ItemButton" Content="Items" Click="Button_Click"/>
        </StackPanel>
    </Border>
    <Border Grid.Column="1" BorderBrush="Gray" BorderThickness="1" Margin="3">
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="*"/>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <Frame Name="MainFrame" Source="Views/StationPage.xaml" />
            <StatusBar Grid.Row="1" Name="StatusBar"/>
        </Grid>

    </Border>
</Grid>

Button_Click 方法是:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        Button button = sender as Button;
        switch ((string)button.Content)
        {
            case "Stations":
                MainFrame.Navigate(new Uri("pack://application:,,,/Views/StationPage.xaml"));
                break;
            case "Items":
                MainFrame.Navigate(new Uri("pack://application:,,,/Views/ItemPage.xaml"));
                break;
            default:
                break;
        }
    }

最佳答案

XAML、WPF 和 UWP 在设计时考虑了 MVVM 模式。虽然您可以使用其他模式和编程方法,但这样做通常会失去 XAML 大约 90% 的功能。并且在其他所有地方都会遇到其他问题。

对于未使用 MVVM 模式的情况,您很少能找到答案。

几年前,我写了一篇介绍 MVVM 的文章。这应该让你开始:http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

关于c# - WPF 框架 - 使用按钮加载页面的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48642679/

相关文章:

c# - 基于 XSD 架构的 Wpf XmlDataProvider 验证

c# - XAML 索引器数据绑定(bind)

c# - 滚动到 UWP 的 ListView 中的新项目

c# - 将快速文本输入发送到另一个进程(窗口)

c# - WPF 滚动按钮(按住功能)

c# - 防止最大化的 WPF 窗口覆盖任务栏

c# - MVVM C#​​ 问题

c# - 使用 Telerik RadGrid 如何从客户端隐藏 GridHyperLinkColumn?

c# - 如何删除性能计数器

c# - 带有 HiveMQ 的 M2Mqtt 库