【问题标题】:Looking for a way to create/replace custom controls + Border寻找一种创建/替换自定义控件+边框的方法
【发布时间】:2018-09-29 06:22:19
【问题描述】:

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

https://prnt.sc/j731zj

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

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

例如(来自 Wallpaper Engine)窗口不仅有我喜欢的蓝色边框,它还有某种蓝色阴影?这对我来说看起来很酷。我也想试试。

https://prnt.sc/j7321n

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

https://prnt.sc/j73bj5

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

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

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

差点忘了提到我真的不想使用 MahApps、Metro Framework 等 3rd 方工具。VS 中没有内置的 Metro 风格选项吗?而是在 .NET 框架中。

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

【问题讨论】:

  • 请不要在外部网站上发布图片链接,而应使用 SO 内部图片上传器。如果这些网站曾经离线拍摄照片,那么您的问题对未来来到这里的人将毫无意义。

标签: c# wpf controls border titlebar


【解决方案1】:

很简单,如果你想拖动窗口,使用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"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多