gpt4 book ai didi

c# - Windows 窗体/WPF 太大,我该如何拆分?

转载 作者:太空狗 更新时间:2023-10-29 22:28:50 25 4
gpt4 key购买 nike

我要创建 WPF 应用程序。到目前为止,在大学,我们完成 GUI 的唯一方法是拥有一个主窗口和一个代码隐藏文件,用于处理其按钮点击等。

我的问题是,随着应用程序的增长,GUI 也在增长,代码隐藏文件的大小可能会失控!

我已经为我的系统确定了大约 15 个主要用例(例如:输入详细信息、查看详细信息等...)。我正在创建一个主窗口(大小:480x320),它包含 15 个独立的屏幕(每个用例一个)。这可以通过居中和拉伸(stretch)的 TabControl 以及 15 个 TabItem 来实现。或者更有可能它只是一堆分层容器,一个在另一个之上(一次只能看到一个)。

关键是,有了 15 个单独的屏幕,我的代码隐藏文件将变得非常庞大(更不用说 xaml 文件了!):在状态之间切换 - 使 14 个折叠/隐藏并使一个可见,处理 15 个不同的控件屏幕。

有没有办法拥有 15 个单独的表单,每个表单都有自己的代码隐藏文件,而不是一个表单上有 15 个 TabItem,然后让一个主引擎根据需要创建和废弃它们?当然,它应该看起来像是一种形式,而不是 15 个弹出窗口。

我该如何处理?您将如何处理数千行长的 xaml 和代码隐藏文件的问题?

最佳答案

您的直觉很好:您不想将所有内容都放在一个窗口中。最好将 15 个“屏幕”中的每一个都放在自己的 XAML 文件中,作为用户控件或页面。

如果 Web 浏览器样式的导航对您的应用程序有意义,那么请查看 Page类(class)。如果您设置应用程序的 StartupUri指向一个页面(而不是一个窗口),然后你会自动得到一个带有后退和前进按钮的窗口,你可以使用 Hyperlink s(设置NavigateUri属性指向另一个页面)或NavigationService的方法导航到新页面。

如果您不需要后退和前进按钮,请将每个“屏幕”放在自己的 UserControl 中, 并在主窗口中添加一些最小的逻辑来显示和隐藏它们。或者,如果您使用的是 MVVM , 你可以设置一些魔法,你只需改变你的窗口的 DataContext (或者更好的是,应用程序级 ViewModel 上的一个属性)它会自动加载并显示正确的 UserControl(查看 DataTemplate s,或观看下面的视频)。

我还强烈建议您使用 MVVM 尝试编写尽可能少的代码隐藏(理想情况下完全没有——并非总能实现,但您会通过尝试学到很多东西)。这使您的 XAML tons 更易于重构。如果您后来决定您的一个网格上有太多东西,您可以将其剪切并粘贴到一个新的 UserControl 中,而无需花费大量时间来解开所有隐藏的代码。

由于听起来您对 MVVM 模式不熟悉,因此该视频可能会让您难以理解,但我还是忍不住推荐 MIX2010 讲座“Build Your Own MVVM Framework”。它让人大开眼界,了解 MVVM 的功能,并且对如何管理不同 UserControl 之间的导航有一些可靠的想法。 (它还有一个指向 MVVM 介绍谈话的链接。)

关于c# - Windows 窗体/WPF 太大,我该如何拆分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3713764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com