我在WPF C#窗口中有2个帧。加载后,应用程序将页面加载到左框架中,而不将任何内容加载到右框架中。在左框架中浏览2页后,我试图在右框架中加载不同的页面。我能够做到这一点的唯一方法是关闭窗口并重新加载它。
如果在同一个WPF窗口左侧框架中的另一个页面上单击按钮而不重新加载孔窗口,如何在WPF窗口的右侧框架中加载新页面?
谢谢
修改
为了澄清一点,我有一个2帧的窗口。我想通过单击左框中页面上的按钮来打开右框中的页面。这就是我所拥有的:
变量类持有“test”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");
}
}
左侧1页:
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中创建一个方法,并在左侧1页按钮上调用它,但是它做同样的事情...显示MessageBox但不刷新MainWindow。
答案 0 :(得分:0)
好的,如果你还没弄明白我是新的! ...我多年前学过Basic,Pascal和C.然后在10年前开发了一些网络,但它已经很长时间了。我想到了!!我现在只使用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();
}
}
希望这有助于其他人!只花了我一天半的时间搞清楚了!大声笑我的第一次成功绑定。
现在,在此代码中,右框架已加载页面但隐藏在视图中,并显示左框架页面。当在左页面上单击按钮时,右框架将被取消隐藏!
答案 1 :(得分:0)
要通过ClickEvent事件在WPF中打开其他页面,必须初始化导航服务。让我们看一下我的wpf-app代码:我在第1页上显示按钮的点击事件打开第2页:
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();
}
答案 2 :(得分:0)
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();
}