WPF最顶层的控制

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),它会改变吗?

+0

如果你正在寻找一种方式来获得的文本块所绘箭头下方,但仍然得到所有用户的输入,你可以试试使用IsHitTestVisible标志。 – 2011-04-04 11:57:37

的另一种选择就是改变元素的顺序在节点

<line/> 

<arrow/> 
<textBlock/> 

a)是的,虽然将其设置为1通常就足够了。

B)号

一)这是相当不干净,我建议你添加系统命名空间

xmlns:sys="clr-namespace:System;assembly=mscorlib" 

,并将其设置是这样的:

Panel.ZIndex="{x:Static sys:Int32.MaxValue}" 

B)这应该没有效果。

+0

无论如何,你不确定是否没有其他控件使用相同的最大值... – serhio 2011-04-04 12:02:28

+0

它使任何你添加到画布最上面的项目,你必须记住,'Children'集合有自己的顺序,它不只是一套。如果你想确保订单是独立的,你需要将所有的Z-Indices绑定到某个控制器类,它为你管理这个。 – 2011-04-04 12:36:34