Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在WinForms中实现富UI?_C#_.net_Wpf_Winforms - Fatal编程技术网

C# 如何在WinForms中实现富UI?

C# 如何在WinForms中实现富UI?,c#,.net,wpf,winforms,C#,.net,Wpf,Winforms,我想为我的桌面应用程序创建一个丰富的UI,但是,WPF对于我的需要来说太复杂了,我更喜欢使用WinForms(如果可能的话)。在我看来,有两种选择: WinForms和包括自定义绘图在内的自定义控件的加载:这将给我细粒度的控件,然而,UI将过于硬编码,并将使重新设计(甚至是初始实现)成为一件相当长且繁琐的事情 WebBrowser控件中的HTML5UI:我非常倾向于这个选项,因为界面可以很容易地(重新)设计,实现只需要很少的代码更改。我已经说过,我没有这方面的经验,也不知道我可能遇到的潜在问题

我想为我的桌面应用程序创建一个丰富的UI,但是,WPF对于我的需要来说太复杂了,我更喜欢使用WinForms(如果可能的话)。在我看来,有两种选择:

  • WinForms和包括自定义绘图在内的自定义控件的加载:这将给我细粒度的控件,然而,UI将过于硬编码,并将使重新设计(甚至是初始实现)成为一件相当长且繁琐的事情

  • WebBrowser控件中的HTML5UI:我非常倾向于这个选项,因为界面可以很容易地(重新)设计,实现只需要很少的代码更改。我已经说过,我没有这方面的经验,也不知道我可能遇到的潜在问题

  • 你们觉得怎么样?还有其他建议吗?我还没有完全排除WPF,如果WinForms不存在,那么WPF和WebBrowser控制如何


    对于桌面应用程序,WPF无疑是一条必由之路,因为它提供了使用
    样式和
    控制模板
    完全重新设计控件的能力

    以桌面版Skype为例。据我所知,它实际上是一个基于XAML的桌面应用程序(WPF),这意味着设计丰富、美观的应用程序肯定是可能的,因为它已经完成了。VisualStudio也是基于XAML的应用程序的一个很好的例子

    在您的情况下,我建议您选择WPF路线,因为您的目标是桌面。有很多非常棒的框架被创建来帮助你的应用看起来更棒,比如和,这两个框架都试图实现Windows8+应用的现代感

    这些框架的基本功能是实现样式和控件模板,以覆盖现有控件的默认样式和模板。我确信有新的控件加入,但本质仍然是一样的

    按钮
    为例,使用
    样式
    控制模板
    很容易更改按钮在窗口上的显示方式。例如:

    <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>
    
    
    
    在这个非常简单的示例中,我只是简单地更改了默认的
    按钮
    样式,并更改了它的显示方式,以在红色
    边框内显示按钮的内容。这不是很复杂,但是你有一个疯狂的自由量,你几乎可以做任何你真正喜欢的事情

    我听说游戏是在WPF中构建的,显然不是AAA游戏,而是相对简单的桌面游戏,但是它们使用我提到的相同原则来设计控件以满足其需求


    一旦你了解了如何重新设计控件,那么这种可能性实际上是无穷无尽的。如果你正在寻找设计灵感,那么就去看看。

    对于桌面应用程序,WPF无疑是一种好方法,因为它提供了使用
    样式和
    控件模板
    完全重新设计控件的能力

    以桌面版Skype为例。据我所知,它实际上是一个基于XAML的桌面应用程序(WPF),这意味着设计丰富、美观的应用程序肯定是可能的,因为它已经完成了。VisualStudio也是基于XAML的应用程序的一个很好的例子

    在您的情况下,我建议您选择WPF路线,因为您的目标是桌面。有很多非常棒的框架被创建来帮助你的应用看起来更棒,比如和,这两个框架都试图实现Windows8+应用的现代感

    这些框架的基本功能是实现样式和控件模板,以覆盖现有控件的默认样式和模板。我确信有新的控件加入,但本质仍然是一样的

    按钮
    为例,使用
    样式
    控制模板
    很容易更改按钮在窗口上的显示方式。例如:

    <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>
    
    
    
    在这个非常简单的示例中,我只是简单地更改了默认的
    按钮
    样式,并更改了它的显示方式,以在红色
    边框内显示按钮的内容。这不是很复杂,但是你有一个疯狂的自由量,你几乎可以做任何你真正喜欢的事情

    我听说游戏是在WPF中构建的,显然不是AAA游戏,而是相对简单的桌面游戏,但是它们使用我提到的相同原则来设计控件以满足其需求


    一旦你了解了如何重新设计控件,那么可能性几乎是无穷无尽的。如果你正在寻找设计灵感,那就去看看。

    如果它真的是一款桌面应用程序,你真的应该尝试一下WPF。开始的时候可能会很棘手,但是你的结果会比使用浏览器控件时更加简单和痛苦。如果你选择web浏览器,你要知道还有比WebBrowser控件更好的选择。看见无论如何,如果我是你,我会忘记Winforms。第三方组件可能也足够了,取决于你的具体需求(Telerik、DevXPress等)@Saragis谢谢你的链接!想知道你最终选择了什么吗?如果它真的是一个桌面应用程序,你真的应该试试WPF。开始的时候可能会很棘手,但是你的结果会比使用浏览器控件时更加简单和痛苦。如果你选择web浏览器,你要知道还有比WebBrowser控件更好的选择。看见无论如何,如果我是你,我会忘记Winforms。第三方组件也可能是