0

我正在尝试编写一个使用 MDI 的应用程序,因为我有一个大窗口和一个带有许多小子窗口的画布区域。这些小窗口可以在画布内调整大小、拖动和移动。

我已经通过使用这个库完成了上述工作:http ://wpfmdi.codeplex.com/

但是,该库充满了错误并且非常严格(除了它是一个废弃的项目之外)。

因此,我想知道在 WPF 中使用 MDI 还有哪些其他选择。我认为编写一个类似于上面链接的库的代码太麻烦了——它基本上处理小窗口的拖动和调整大小,并确保它们不能被拖动到画布边缘之外。我认为自己编写代码并不容易。

有任何想法吗?

4

3 回答 3

0

我又看了这个 MDI 库。我想我解决了这个问题。您希望 MdiChild 像单击它时那样最大化。

问题是,如果您在主窗口的构造函数中将 MdiChild 的 WindowState 设置为 Maximized,您将无法获得预期的大小调整。因此,您需要确保已加载主窗口,然后确保已加载 MdiChild。如果是这种情况,您可以以编程方式设置 MdiChild 的 WindowState 并获得预期的行为。

有关 Loaded-events,请参阅以下示例代码(查看下面的完整源代码):

void Main_Loaded(object sender, RoutedEventArgs e)
{
    var mdiChild = new MdiChild
    {
        Title = "Window Using Code",
        Content = new ExampleControl(),
        Width = 500,
        Height = 450,
        Position = new Point(200, 30)
    };
    Container.Children.Add(mdiChild);
    mdiChild.Loaded +=new RoutedEventHandler(mdiChild_Loaded);
}

void mdiChild_Loaded(object sender, RoutedEventArgs e)
{
    if (sender is MdiChild)
    {
        var mdiChild = (sender as MdiChild);
        mdiChild.WindowState = WindowState.Maximized;
    }
}

这是使它工作的源代码。让我知道这是否有帮助。

于 2012-10-21T16:52:29.197 回答
0

我认为你应该使用它,它更酷:

http://avalondock.codeplex.com/

它具有选项卡、可调整大小的可停靠窗格等。与 Visual Studio 非常相似。

于 2012-10-21T14:20:38.820 回答
0

WPF 的新 MDI 选项:

http://dragablz.net/2015/01/26/mdi-in-wpf-via-dragablz/

GitHub项目:https ://github.com/ButchersBoy/Dragablz

于 2015-01-26T22:26:01.063 回答