正在寻找一种创建/替换自定义控件的方法+边框

时间:2018-04-18 21:32:22

标签: c# wpf controls border titlebar

我想创建一个与Visual Studio中完全相同的标题栏/控件的应用程序。或者你知道dnSpy吗?它也在使用它们。

https://prnt.sc/j731zj

我也喜欢这个1px边框,在这种情况下是蓝色边框。

我已经搜索了很多,也试图在这里找到一些东西,但我没有找到对我有用的东西。

这里举例说明(它来自壁纸引擎)窗口不仅有蓝色边框,我喜欢它,还有一些蓝色阴影?这看起来很酷我。我也想尝试一下。

https://prnt.sc/j7321n

我在WinForms中已经尝试过的是使用面板并自己创建它。

https://prnt.sc/j73bj5

我设法获得了我想要的边框,我也可以使用图片框来显示最小/最大/关闭按钮?

但这并不是我想要的,我也必须编写应用程序的移动/拖动行为,因为不再有控件了。这不是那么难,但......我想要另一种方式。

任何人都可以帮助我吗?我在VS 2017中使用C#,我想用Forms或WPF创建应用程序。可能会去WPF。

几乎忘了提及我真的不想使用第三方工具,如MahApps,Metro Framework等。在VS中是不是有内置的Metro风格选项?而是在.NET框架中。

我的意思是它实际上只有这三个按钮,最小/最大/关闭。和边界。这就是我所需要的一切

1 个答案:

答案 0 :(得分:0)

这很简单,如果你想拖动窗口,请使用DragMove方法:

 private void WhatEverControlYouWanttoUseToClickAndDrag_MouseDown()
  { 
    DragMove();
  )

其余

您可以简单地使用Image控件。您可以添加要显示的任何图片。将其放在Rectangle上方并使用它。

<强>解释

Image控件来自System.Windows.Controls命名空间。Rectangle控件没有什么不同。现在,您可能会问,为什么我不建议Button?好吧,你可以使用一个按钮,但除非你选择ControlTemplate,否则你不能用它来实现所需的外观,对于初学者来说,我完全不会建议。

您可以使用Rectangle,设置Fill颜色。现在,如果您想在鼠标悬停在矩形上时更改颜色,该怎么办?好吧,这是一个样本XAML,它还会为变色添加动画:)

 <Rectangle >
   <Rectangle.Triggers>
     <EventTrigger RoutedEvent="MouseEnter">
       <BeginStoryboard>
         <Storyboard>
           <ColorAnimation Storyboard.TargetProperty="Fill" Value = "Blue" Duration="0:0:0.3"/>
          ///Add required closing tags please

现在,关于Image控件。当您将其放在矩形上时,您需要将IsHitTestVisible属性设置为False,这将阻止任何类型的鼠标交互它还可以防止ImageRectangle之间的干扰。 :)

最后一个提示,如果您想让Image控件在图像上应用最清晰的外观/最佳品质,请务必将BitmapScalingMode设置为Fant

 <Image Source="\ac.png" RenderingOptions.BitmapScalingMode="Fant"/>