WPF最顶层的控制
我有以下的用户控件WPF最顶层的控制
<UserControl x:Class="MyControl">
<Canvas Background="Transparent">
<Line x:Name="line"/>
<TextBlock x:Name="textBlock" Panel.ZIndex="99999999" />
<Polygon Name="arrow" "/>
</Canvas>
</UserControl>
一)为Panel.ZIndex="99999999"
设置此控制,在控制最上面的一个正确的方法是什么?
b)如果我切换可视性(Visible => Invisible => Visible),它会改变吗?
的另一种选择就是改变元素的顺序在节点
<line/>
<arrow/>
<textBlock/>
a)是的,虽然将其设置为1
通常就足够了。
B)号
一)这是相当不干净,我建议你添加系统命名空间
xmlns:sys="clr-namespace:System;assembly=mscorlib"
,并将其设置是这样的:
Panel.ZIndex="{x:Static sys:Int32.MaxValue}"
B)这应该没有效果。
无论如何,你不确定是否没有其他控件使用相同的最大值... – serhio 2011-04-04 12:02:28
它使任何你添加到画布最上面的项目,你必须记住,'Children'集合有自己的顺序,它不只是一套。如果你想确保订单是独立的,你需要将所有的Z-Indices绑定到某个控制器类,它为你管理这个。 – 2011-04-04 12:36:34
如果你正在寻找一种方式来获得的文本块所绘箭头下方,但仍然得到所有用户的输入,你可以试试使用IsHitTestVisible标志。 – 2011-04-04 11:57:37