WPF自定义Chrome窗口?

Hun*_*ell 4 c# wpf window visual-c#-express-2010

我一直试图做出类似的事情...在此输入图像描述

我看了看,只发现了这篇文章.我无法将其集成到我的应用程序中.我今天刚刚开始WPF,所以我正在学习.我已经下载了窗口.壳牌dLL.我还需要什么?谢谢!

RJ *_*ler 14

如果您正在寻找有关如何将其添加到您的应用程序的分步指南,我可以尝试一下; 我碰巧需要为一个小应用程序进行一些刷新,我喜欢这个并尝试一下 - 我花了大约45分钟申请.很酷的东西!

第一步:下载应用程序并将其解压缩到您的计算机.

在其中,您将找到三个子文件夹.一个是示例应用程序,一个名为Microsoft.Windows.Shell,一个名为CustomChromeLibrary.后两个复制到根文件夹中项目地图,添加到您的项目地图(添加现有项目),并从你的启动项目,引用他们.

现在打开要应用CustomChromeLibrary的窗口.您需要更改根目录

<Window> 
Run Code Online (Sandbox Code Playgroud)

<ccl:CustomChromeWindow>
Run Code Online (Sandbox Code Playgroud)

,这是通过使用此代码作为文档根目录来完成的:

<ccl:CustomChromeWindow 
Title="YourWindowTitle" Height="268" Width="733" ResizeMode="CanResize" 
x:Class="YourNamespace.YourWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:shell="http://schemas.microsoft.com/winfx/2006/xaml/presentation/shell"
xmlns:ccl="clr-namespace:CustomChromeLibrary;assembly=CustomChromeLibrary"
xmlns:local="clr-namespace:YourNamespace" 
>
Run Code Online (Sandbox Code Playgroud)

注意样本中的最后三行.这些需要更新以引用正确的库; 最后一个实际引用您的命名空间.

接下来,您需要更新窗口的源代码,因为这仍然是一个简单的窗口,您将收到错误.

改变这个

public partial class YourWindow : Window
Run Code Online (Sandbox Code Playgroud)

对此

public partial class YourWindow : CustomChromeLibrary.CustomChromeWindow
Run Code Online (Sandbox Code Playgroud)

你已经到了一半了!

接下来,您只需要为窗口创建对象(标题栏等).这在5号样本项目中完成得非常出色; 我真的只是复制它.

从中获取一切

<shell:WindowChrome.WindowChrome>
    <shell:WindowChrome
    ...
Run Code Online (Sandbox Code Playgroud)

到这里

    <!--min/max/close buttons-->
    <ccl:CaptionButtons/>
Run Code Online (Sandbox Code Playgroud)

现在你可以像这样填充你的窗口

    <Grid> 
        The content of your Window goes here 
    </Grid>
Run Code Online (Sandbox Code Playgroud)

并像这样关闭xaml

    </Grid>
</ccl:CustomChromeWindow>
Run Code Online (Sandbox Code Playgroud)

现在,如果您尝试运行此操作,您将收到另一个错误.仍然缺少三个文件:

您需要的第一个是Microsoft文件:CaptionButtonRectToMarginConverter.cs; 你也会在样本中找到它.将其复制到您的项目并添加它(添加现有文件).

您需要对其进行一处更改:

namespace YourNamespace
{ ...
Run Code Online (Sandbox Code Playgroud)

而不是样本的命名空间.

最后,您需要两个创建按钮的xaml文件:GlassButton.xaml和GlassIcon.xaml; 它们可以在"Resources"子文件夹中找到(并在xaml中作为资源字典引用).将整个子文件夹复制到项目中,并将两个文件添加到项目中(添加现有文件).

现在你应该最终能够运行你的项目了.

让我们不要忘记这一点:gbahns的很多荣誉,是codeplex.com上原始文章的作者!


Viv*_*Viv 5

您可以找到很多自定义chrome的实现.

我见过的另一个帮助库是你链接的

MahApps.Metro

阅读第3节.可以使用Nuget进行设置,使其更容易为新用户集成.

3.3节3.5 3.5讨论自定义和扩展MetroWindow控件,它为您提供自定义chrome,并允许向chrome标题栏添加控件