我将首先解释我的WPF应用程序的UI。
我创建了一个窗口,其中包含许多按钮,这些按钮始终对用户可见(让我们称之为主窗口),每个按钮将打开一个与任务相关的新窗口。我想要做的是,每当点击一个按钮时,主窗口应该被隐藏(可见性:折叠),并且应该显示新窗口。第二个窗口还将包含一个按钮,该按钮将隐藏第二个窗口并显示主窗口。 根据与之相关的命令,将要打开的第二个窗口将具有不同的尺寸,因此我将为eaach提供不同的窗口
TLDR我希望能够在多个窗口之间切换,一次只能看到一个窗口,如何管理多个窗口之间的切换?
注意:我可以从主窗口显示第二个窗口,但是从第二个窗口显示main是什么...无法得到它....或者如果有人能告诉我一个不同的方法来实现它:其他而不是多个窗口
此外,这是UI的扩展,我希望在此页面上显示这种结晶的按钮:http://postimage.org/image/4yibiulsh/ 任何人都可以指导我正确的实现,我已经通过许多网站,并试图通过混合创建这些,但我只是不是一个UI人....请帮助这个 提前谢谢。
答案 0 :(得分:1)
您可以使用多种方法。
轻松切换回主窗口:将MainWindow的引用注入SecondWindow(或任何其他要显示的窗口),然后在该窗口的Closing Event中将MainWindow的Visibility设置为Visible。 / p>
您是否还考虑过将所有内容保存在同一个窗口中,但是您设置了可见和不可见的不同面板?这可能会产生同样的效果,但它不那么复杂......
希望有帮助...
答案 1 :(得分:1)
我会创建一个“窗口管理器”,它将订阅打开/关闭的更改。 在这种情况下,您不必重载Window类。 示例(为我工作)。
public class WindowsManager
{
static readonly List<Window> Windows=new List<Window>();
public static T CreateWindow<T>(T window) where T:Window
{
Windows.Add(window);
window.Closed += WindowClosed;
window.IsVisibleChanged += WindowIsVisibleChanged;
return window;
}
static void WindowIsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
{
var mainWindow = Application.Current.Windows.OfType<MainWindow>().Single();
mainWindow.Visibility = Equals(e.NewValue, true) ? Visibility.Hidden : Visibility.Visible;
}
static void WindowClosed(object sender, System.EventArgs e)
{
var window = (Window) sender;
window.Closed -= WindowClosed;
window.IsVisibleChanged -= WindowIsVisibleChanged;
Windows.Remove(window);
}
}
使用方法:
private void button1_Click(object sender, RoutedEventArgs e)
{
WindowsManager.CreateWindow(new Child1()).Show();
}
private void button2_Click(object sender, RoutedEventArgs e)
{
WindowsManager.CreateWindow(new Child2()).Show();
}
因此,当子窗口关闭时,WindowsManager将收到通知,并将更新主窗口的可见性
<强> UPD1。强> 添加行以取消订阅VisibleChanged