.net &引用;VisualTreeHelper.GetDegenantBounds()”的;返回无穷大

.net &引用;VisualTreeHelper.GetDegenantBounds()”的;返回无穷大,.net,wpf,visualtreehelper,.net,Wpf,Visualtreehelper,为什么VisualTreeHelper.getDegenantBounds(SomeVisualItem)方法返回(-Infinity,-Infinity,Infinity,Infinity) SomeVisualItem的Canvas.Left,Canvas.Top,Width。。。是显式分配的 我解决了。 我刚刚在控件的ControlTemplate中删除了ViewBox的效果: <Viewbox Opacity=".7" Stretch="Uniform" IsHitTestVisi

为什么
VisualTreeHelper.getDegenantBounds(SomeVisualItem)
方法返回
(-Infinity,-Infinity,Infinity,Infinity)

SomeVisualItem的
Canvas.Left
Canvas.Top
Width
。。。是显式分配的

我解决了。 我刚刚在控件的ControlTemplate中删除了ViewBox的效果:

<Viewbox Opacity=".7" Stretch="Uniform" IsHitTestVisible="False" FocusVisualStyle="{x:Null}" IsEnabled="False" ForceCursor="False" x:Name="PART_OutThumb">
    <Viewbox.Effect>
        <BlurEffect KernelType="Gaussian" Radius="1" />
    </Viewbox.Effect>
</Viewbox>

致:



现在
VisualTreeHelper.getDegenantBounds()
工作得很好

你什么时候叫它?如果您在窗口构造函数上调用它,请稍后在构建可视化树时调用它。是的,我知道。我称之为构建可视化树(例如:在某些按钮单击事件处理程序中)后,实际上,我在画布中有一个矩形,该项位于同一画布中,现在我想确定该项是否位于该矩形中。可能尝试附加。也许它会给你一些提示,为什么会这样。SomeVisualItem是客户控件吗?SomeVisualItem是内容控件吗
<Viewbox Opacity=".7" Stretch="Uniform" IsHitTestVisible="False" FocusVisualStyle="{x:Null}" IsEnabled="False" ForceCursor="False" x:Name="PART_OutThumb">
</Viewbox>