WPF Canvas上没有Canvas.ZIndex或SetZIndex()属性

3

我想要改变WPF画布上组件的Z顺序,但似乎在XAML属性或后台代码中并不存在相关方法。

以下是我的XAML代码:

<UserControl x:Class="FrontendUI.Controls.RadialTracker"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:FrontendUI.Controls"
         mc:Ignorable="d" 
         d:DesignHeight="500" d:DesignWidth="500">
<Grid >
    <Canvas x:Name="TrackerCanvas">
    </Canvas>
</Grid>

一开始我试图以编程方式实现这个:

enter image description here

然后我尝试使用XAML添加路径并设置Canvas.ZIndex,但是也不存在。虽然有Panel.ZIndex,但我认为这是指UI中更高的某些东西(网格或用户控件本身?)

enter image description here

不知如何进行下一步操作。有没有人知道这是为什么?

1个回答

7
< p >Canvas 继承自 Panel。Panel.SetZIndex() 是一个静态方法,而 Panel.ZIndex 则是一个附加属性,所以你在 xaml 中看不到它。< /p> < p >要在 xaml 中为子组件设置 ZIndex,请按如下操作。< /p>
<Canvas >
        <Button Content="Button" Panel.ZIndex="1" />
</Canvas>

在代码后端为子组件设置Zindex。
Canvas.SetZIndex(control, index);

您说:“有Panel.ZIndex,但我假设这是指UI中的更高级别(网格或用户控件本身?)”。

您的假设是错误的。要达到您的要求,需要设置Panel.ZIndex。

您问道:“但他们都使用Canvas.ZIndex,有人知道为什么会发生这种情况吗?”

因为ZIndex是一个附加属性(而不是常规依赖属性)。


这是静态的!天啊,我怎么没注意到。谢谢。 - Joe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接