WPF自定义Chrome窗口?

时间:2013-03-09 22:22:02

标签: c# wpf window visual-c#-express-2010

我一直在努力做出与此相关的事情...... enter image description here

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

3 个答案:

答案 0 :(得分:14)

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

首先:下载应用程序并将其解压缩到您的计算机上。

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

现在打开要应用CustomChromeLibrary的窗口。您需要从

更改根目录
<Window> 

<ccl:CustomChromeWindow>

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

<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" 
>

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

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

更改此

public partial class YourWindow : Window

到这个

public partial class YourWindow : CustomChromeLibrary.CustomChromeWindow

你已经到了一半!

接下来,您只需要为窗口创建对象(标题栏等)。这是在示例项目5中完成的;我真的只是复制它。

获取所有内容
<shell:WindowChrome.WindowChrome>
    <shell:WindowChrome
    ...

到这里

    <!--min/max/close buttons-->
    <ccl:CaptionButtons/>

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

    <Grid> 
        The content of your Window goes here 
    </Grid>

并像这样关闭xaml

    </Grid>
</ccl:CustomChromeWindow>

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

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

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

namespace YourNamespace
{ ...

而不是示例的命名空间。

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

现在你终于能够运行你的项目了。

让我们不要忘记这一点:{code for codex.com上原作文的作者gbahns给予了很多赞誉!

答案 1 :(得分:5)

您可以找到很多针对自定义Chrome的实现。

我见过的另一个帮助程序库是

MahApps.Metro

阅读第3部分。可以使用Nuget进行设置,使其更容易为新人集成。

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

答案 2 :(得分:0)

在此堆栈溢出问题中:

How can I add a button to the WPF caption bar while using custom window chrome?

我在询问如何在自定义窗口Chrome窗口的标题栏中插入按钮。 xaml示例可能足以帮助您开始。

除此之外,我不确定你在寻找什么。

编辑:我在其他帖子中的按钮样式是一个相当简单的按钮,但你应该能够用你想要的任何样式替换它。