绑定画布.顶部和面板.ZIndex编程

本文关键字:ZIndex 编程 和面板 顶部 绑定 | 更新日期: 2023-09-27 18:16:04

如何仅通过c#代码绑定对象的Canvas.TopPanel.ZIndex属性?我想得到一个元素越小,它的ZIndex就越高。我对WPF有点陌生,所以我不知道怎么做。

绑定画布.顶部和面板.ZIndex编程

您可以创建如下所示的Binding。Path字符串中的括号是必需的,因为源属性是附加属性。

element.SetBinding(Panel.ZIndexProperty,
    new Binding
    {
        RelativeSource = RelativeSource.Self,
        Path = new PropertyPath("(Canvas.Top)")
    });

你也可以像这样直接将源DependencyProperty传递给PropertyPath构造函数:

element.SetBinding(Panel.ZIndexProperty,
    new Binding
    {
        RelativeSource = RelativeSource.Self,
        Path = new PropertyPath(Canvas.TopProperty)
    });

doubleint的转换由框架隐式完成。然而,如果您需要一些"缩放"因子,您还必须添加绑定转换器。

你可以试试:

    <Canvas>
        <Border Panel.ZIndex="{Binding Location, Converter={StaticResource DoubleToIntConverter}}" Canvas.Top="{Binding Location}"/>
    </Canvas>

DoubleToIntConverter是一个接受Double类型并返回int类型的转换器。Location是存储在ViewModel中的Double。