How to implement a Rich UI in WinForms?
我想为我的桌面应用程序创建一个丰富的 UI,但是 WPF 对我的需求来说太复杂了,我更喜欢使用 WinForms(如果可能的话)。在我看来,有两种选择:
WinForms 和大量的自定义控件,包括自定义绘图:这会给我提供细粒度的控制,但是,UI 编码太硬,并且会使重新设计(甚至是初始实现)成为一件漫长而乏味的事情。
WebBrowser 控件中的 HTML5 UI:我非常倾向于这个选项,因为界面可以很容易地(重新)设计,并且实现需要的代码更改最少。话虽如此,我没有这方面的经验,也不知道我可能遇到的潜在问题。
你们怎么看?还有其他建议吗?我还没有完全排除 WPF,如果 WinForms 出了,那么 WPF vs WebBrowser Control 怎么样?
- 如果它真的是一个桌面应用程序,你真的应该尝试一下 WPF。开始可能会很棘手,但与使用浏览器控件相比,您的结果将不会那么麻烦和痛苦。如果您使用 Web 浏览器路线,请知道有比 WebBrowser 控件更好的选择。请参阅 stackoverflow.com/questions/1495944/…。无论如何,如果我是你,我会忘记 Winforms。
- 第三方组件也可能就足够了,具体取决于您的特定需求(Telerik、DevExpress、…)
- @Saragis 感谢您的链接!
- 想知道你最终选择了什么?
对于桌面应用程序,WPF 无疑是最佳选择,因为它提供了使用 Style 和 ControlTemplate 完全重新设计控件的能力。
以桌面版 Skype 为例。据我所知,它实际上是一个基于 XAML 的桌面应用程序 (WPF),这意味着设计丰富、漂亮的应用程序当然是可能的,因为它已经完成了。 Visual Studio 也是基于 XAML 的应用程序的一个很好的例子。
在您的情况下,我建议您在定位桌面时使用 WPF 路线。已经创建了许多非常棒的框架来帮助您的应用程序看起来更棒,例如 MahApps 和 MUI,它们都试图实现 Windows 8 应用程序的现代感。
这些框架的本质是实现 Styles 和 ControlTemplates 来覆盖现有控件的默认样式和模板。我确定加入了新的控件,但本质仍然保持不变。
以Button 为例,使用Style 或ControlTemplate 很容易改变按钮在窗口上的显示方式。例如:
1
2 3 4 5 6 7 8 9 10 11 12 13 |
<Style TargetType=“Button”>
<Setter Property=“Background” Value=“Red”/> <Setter Property=“Template”> <Setter.Value> <ControlTemplate TargetType=“Button”> <Border BorderThickness=“0” Background=“{TemplateBinding Background}”> <ContentPresenter Margin=“20,10”/> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style> |
在这个非常简单的示例中,我只是更改了默认的 Button 样式并更改了它的呈现方式,以显示红色 Border 内的按钮内容。这不是很复杂,但是你有很大的自由度,你几乎可以做任何你真正喜欢的事情。
我听说过使用 WPF 构建的游戏,显然不是 AAA 游戏,而是相对简单的桌面游戏,但是它们使用与我提到的相同的原则来设计控件以满足他们的需求。
一旦你了解了如何重新设计控件,那么可能性实际上是无穷无尽的,如果你正在寻找设计灵感,那就看看 dribbble。
来源:https://www.codenong.com/31739197/