【问题标题】:How do I access the content of the frame in different class? WPF如何访问不同类中框架的内容? WPF
【发布时间】:2021-06-22 01:47:16
【问题描述】:

RegisterButtonclick 时,我想将框架的内容更改为 Register.xaml 页面,但它没有这样做。如何从 MainWindow 正确访问框架?

请帮忙!我在这里已经够久了。

MainWindow.xaml

<Frame x:Name="MainFrame" Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="3" 
               Padding="10" BorderBrush="DarkGray" BorderThickness="2"/>

MainWindow.xaml.cs

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        MainFrame.Content = new Navigation();

    }

    public void GoToRegister()
    {
        MainFrame.Content = new Register();
    }
}

Navigation.xaml

<Button x:Name="RegisterButton" Grid.Row="0" Grid.Column="0" Background="LightSteelBlue" Content="Register" FontSize="24" Margin="10" Click="RegisterButton_Click"/>

Navigation.xaml.cs

public partial class Navigation : Page
{
    public Navigation()
    {
        InitializeComponent();
    }

    private void RegisterButton_Click(object sender, RoutedEventArgs e)
    {
        MessageBox.Show("success");
        MainWindow Main = new MainWindow();
        Main.MainFrame.Content = new Register();
    }
}

【问题讨论】:

    标签: c# wpf xaml window frame


    【解决方案1】:

    在您的Navigation 中,您正在创建一个新的MainWindow(您没有显示),这就是它不起作用的原因。如果您想从底层类访问MainWindow(我不会这样做,但这是另一回事),例如,您可以创建一个公共静态方法,将Page 作为输入参数并设置它作为MainFrame的内容:

    在您的 MainWindow.xaml.cs

    public static void SetMainFrameContent(Page page)
    {
        this.MainFrame.Content = page;
    }
    

    然后在您的 Navigation.xaml.cs 按钮单击事件处理程序中调用此方法:

    private void RegisterButton_Click(object sender, RoutedEventArgs e)
    {
        MainWindow.SetMainFrameContent(new Register());
        MessageBox.Show("success");
    }
    

    设置每个窗口的数据上下文也可能有所帮助,只需在构造函数中调用this.DataContext = this;

    【讨论】:

      猜你喜欢
      • 2011-02-24
      • 2015-12-18
      • 1970-01-01
      • 1970-01-01
      • 2013-08-24
      • 2016-10-24
      • 2022-10-14
      • 1970-01-01
      相关资源
      最近更新 更多