【发布时间】:2010-07-29 00:02:30
【问题描述】:
我正在开发一个 UserControl,称之为 CoolControl,它的作用有点像一个窗口,具有一些特殊功能。到目前为止,它可以在屏幕上调整大小和拖动。如果我使用 XAML 将多个 CoolControl 对象添加到我的应用程序窗口,最后一个声明的对象总是在前面。这很好,但我想这样做,如果我在运行时单击我的一个 CoolControl 对象,该控件将把自己放在所有其他控件的前面。
我尝试过使用Canvas.SetZIndex,但除非我无法想出一个足够聪明的解决方案,否则我看不出它对我有什么帮助。因为一旦我将一个控件的 Z-Index 设置为 9999,随着时间的推移,我单击的每个其他控件都将具有相同的值 9999。然后,最后声明的控件再次出现在前面。
如果您的任务是为某人的 UserControl 编写 BringToFront() 方法,您将如何以最简单的方式完成它?我更喜欢一个更好的解决方案,而不是获取父窗口,循环遍历所有控件,找到最大 Z-Index,然后相应地设置 CoolControl 的 Z-Index,如果这甚至是一个有效的解决方案。
【问题讨论】:
-
您研究过叠加层吗?也许使用装饰器?
-
请在标签中保留像“C#”这样的标签,并且不要放在标题中。谢谢。
标签: c# wpf user-controls z-order