1

所以我刚开始使用 WPF,我真的很恼火,如果我将两个网格放在彼此的顶部,顶部的网格不是不透明的。它使设计非常烦人。这可以以某种方式关闭吗?

我只是在构建您的标准 Winforms STYLE 应用程序,但在 WPF 中。我只是想开始弥合这里的差距。在 Winforms(和 VB)中,您的表单上总是有组合框或其他东西,然后根据某些用户上下文,其中一个组合框将位于顶部。这是我自古以来设计表格的方式。这里必须满足以下两件事之一:

A)这不是使用 WPF 设计 Windows 的推荐方法,但我不明白你应该做什么

B)有一些属性可以使网格不透明,因此我可以按照我习惯的样式构建窗口。

我对解决 A 或 B 的答案很好。如果我因为它们已经改变而没有以正确的方式做事,那么请赐教。

更新:事实证明,我可以通过设置背景颜色使网格变得不透明,但现在看起来我被锁定在白色背景中,而不是坚持使用系统颜色。

4

2 回答 2

2

您可以使用SystemColors使控件背景颜色匹配(而不是白色)。

我不明白您为什么要将一个网格放在另一个网格之上。在 WPF 中,您通常使用单个网格在一个区域内堆叠多个视觉元素。你能解释一下为什么你想用前景元素隐藏背景中的东西吗?

这听起来有点像您正在实现一个选项卡控件——根据焦点在控件页面之间切换。你试过新的TabControl吗?

我尽可能从 WinForms 转向 WPF 开发,并发现这样做需要一些重新调整。WPF 有一种完全不同的布局方式,现在我对它更满意了,我认为它更胜一筹。我猜你只需要多走一点学习曲线。

希望有帮助。

编辑:作为对您的评论的回应,我想您可以拥有一个没有标签的标签控件,尽管我自己没有尝试过(可能值得在 SO 上提出另一个问题)。选项卡控件是带标题的控件,这意味着它们具有标题项和内容项。在这种情况下,标题是选项卡按钮,内容是页面项。您可以指定ControlTemplate详细说明这些项目应如何相互显示。

有趣的是,许多其他类型的常见 GUI 元素也是标题控件:

  • 菜单项- 菜单项文本/图标是标题,可选的子菜单是内容
  • 树视图- 每个节点都是标题,可选的子节点在内容中
  • 组框- 标题是标题,内容是内容:)

请注意,在菜单项和树视图的情况下,类型可能会递归地嵌套在其自身中。这是非常优雅的,并且可以在相同的逻辑模型上提供一些完全不同的表示选项,只需更改控制模板。

有关更多信息,请阅读HeaderedContentControlHeaderedItemsControl

于 2009-01-17T16:39:21.217 回答
0

您可以使用以下内容:

  <Grid Background="{DynamicResource {x:Static SystemColors.WindowBrush}}">  
  <!-- content -->
  </Grid>

这将实时响应系统颜色的变化(DynamicResource 执行此操作)。

于 2009-01-17T16:44:02.860 回答