[英]How can I open a page in the same frame when click a button in that frame in wpf?
[英]How do I open page in different frame - WPF
我在WPF C#窗口中有2帧。 加载后,应用程序将页面加载到左侧框架中,而没有内容加载到右侧框架中。 在左侧框架中浏览2页后,我试图在右侧框架中加载另一页。 我能够执行此操作的唯一方法是关闭窗口并重新加载它。
当在同一WPF窗口的左框架中单击不同的页面时,如何在WPF窗口的右框架中加载新页面而不重新加载孔窗口?
谢谢
编辑:
为了澄清一点,我有2个框架的1个窗口。 我想通过单击左侧框架页面上的按钮来在右侧框架中打开页面。 这就是我所拥有的:
持有“测试” int的变量类:
public static class variables
{
public static int test;
}
主视窗:
public MainWindow()
{
InitializeComponent();
int mytest = variables.test;
left1 left1 = new left1();
left.NavigationService.Navigate(left1);
Right1 right1 = new Right1();
if (mytest == 1)
{
right.NavigationService.Navigate(right1);
MessageBox.Show("1");
}
}
和left1页面:
public left1()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
int test = 1;
variables.test = test;
MainWindow mw = new MainWindow();
mw.Show();
}
这项工作有效,但是会打开另一个调用mw.Show()的窗口; 有没有一种方法可以在不打开另一个窗口的情况下工作(例如刷新窗口)? 我尝试了mw.InitializeComponent(); 这将显示MessageBox,但不会重新呈现MainWindow。 我试图在MainWindow中创建一个方法,并在left1页面上单击该按钮,但它做的是相同的事情……显示了MessageBox,但不刷新MainWindow。
确定,如果您还没有弄清楚我是新来的! ...我很早以前就学习过Basic,Pascal和C。然后在10年前进行了一些Web开发,但是时间很长。 我想到了!! 我至今仅与C#WPF合作约2周。
我将右框架的Visibility属性绑定到MainWindow类下的方法,该方法在单击按钮时调用,并使用了INotifyPropertyChanged事件。 这就是我现在所拥有的:
MainWindow.xmal.cs:
public class Refresh : INotifyPropertyChanged
{
private string vis1;
public string Vis1
{
get { return vis1; }
set
{
if (vis1 != value)
{
vis1 = value;
OnPropertyChanged("Vis1");
}
}
}
protected void OnPropertyChanged(string propertyname)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyname));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
public partial class MainWindow : Window
{
private static Refresh Visi;
public MainWindow()
{
InitializeComponent();
Left1 l1 = new Left1();
Right1 r1 = new Right1();
left.NavigationService.Navigate(l1);
right.NavigationService.Navigate(r1);
Visi = new Refresh { Vis1 = "Hidden" };
DataContext = Visi;
}
public static void showRight()
{
Visi.Vis1 = "Visible";
}
}
XAML:
<Frame x:Name="right" Content="Frame" HorizontalAlignment="Left" Height="224" Margin="262,10,0,0" VerticalAlignment="Top" Width="225" Visibility="{Binding Vis1}" />
在左侧页面上只有一个简单的按钮单击事件!:
public partial class Left1 : Page
{
public Left1()
{
InitializeComponent();
}
private void Button_Click(object sender, RoutedEventArgs e)
{
MainWindow.showRight();
}
}
希望这可以帮助其他人! 只花了我一天半的时间就解决了! 大声笑我第一次成功绑定。
因此,现在在此代码中,右框架已加载页面,但从视图中隐藏了,并显示了左框架页面。 单击左侧页面上的按钮后,右框架将变为隐藏状态!
为了通过ClickEvent事件在WPF中打开另一个页面,必须初始化导航服务。 让我们看一下我的wpf-app代码:在按钮的click事件上打开页面2,即按钮出现在页面1上:
private void Button_Click(object sender, RoutedEventArgs e)
{
NavigationWindow _navigationWindow = new NavigationWindow();
_navigationWindow.Height = this.Height;
_navigationWindow.Width = this.Width;
_navigationWindow.Show();
_navigationWindow.Navigate(new Page2());
this.Close();
}
public void Login_Click(object sender, RoutedEventArgs e)
{
NavigationWindow _navigationWindow = new NavigationWindow();
_navigationWindow.Height = this.Height;
_navigationWindow.Width = this.Width;
_navigationWindow.Show();
_navigationWindow.Navigate(new Page1());
this.Close();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.