所以我刚刚开始使用WPF,我真的很恼火,如果我将两个网格放在一起,顶部的网格不是不透明的。它使设计非常烦人。这可以以某种方式关闭吗?
我只是在构建标准的Winforms STYLE应用程序,但是在WPF中。我只是想在这里开始缩小差距。在Winforms(和VB)中,您总是在表单上有组框或其他内容,然后根据某些用户上下文,其中一个组框将位于顶部。它是我自古以来就设计形式的方式。这里必须有两件事情之一:
A)这不是推荐使用WPF设计Windows的方法,但我不明白你应该做什么
B)有一些属性使Grids不透明,所以我可以用我习惯的风格构建Window。
对于解决A或B的答案,我很好。如果我没有以正确的方式做事,因为他们已经改变了,那么请赐教。
更新:事实证明,我可以通过设置背景颜色来制作网格操作,但现在看起来我被锁定在白色背景中而不是坚持使用系统颜色。
答案 0 :(得分:2)
您可以使用SystemColors
使控件背景颜色匹配(而不是白色)。
我不明白你为什么要把一个网格放在另一个网格之上。在WPF中,您通常使用单个网格在一个区域内堆叠多个可视元素。你能解释为什么你想用前景元素隐藏背景中的东西吗?
听起来有点像你正在实现一个标签控件 - 根据焦点在控件页面之间切换。您是否尝试过新的TabControl
?
我正在尽可能地从WinForms转向WPF开发,并且发现这样做需要进行一些重新调整。 WPF有一种完全不同的铺设方式,现在我对它更加满意,我认为它更优越。我猜你只需要再学习一段时间。
希望有所帮助。
编辑:为了回应您的评论,我想您可以使用没有标签的标签控件,但我自己没有尝试过(可能值得在SO上提出另一个问题)。选项卡控件是带标题的控件,这意味着它们具有标题项和内容项。在这种情况下,标题是标签按钮,内容是页面项。您可以指定ControlTemplate
,详细说明这些项目应如何相对于彼此显示。
有趣的是,许多其他类型的常见GUI元素也是带有标题的控件:
请注意,对于菜单项和树视图,类型可以递归地嵌套在其自身内。这非常优雅,可以在同一逻辑模型上提供一些截然不同的演示选项,只需更改控件模板。
的更多信息,请参阅答案 1 :(得分:0)
您可以使用以下内容:
<Grid Background="{DynamicResource {x:Static SystemColors.WindowBrush}}">
<!-- content -->
</Grid>
这将动态响应系统颜色的变化(DynamicResource会这样做)。