【问题标题】:WPF: Bind Canvas.Top and Panel.ZIndex programmaticallyWPF:以编程方式绑定 Canvas.Top 和 Panel.ZIndex
【发布时间】:2016-11-03 14:10:33
【问题描述】:

如何仅通过 C# 中的代码绑定对象的 Canvas.TopPanel.ZIndex 属性?我想获得元素越低,其ZIndex 越高。我对 WPF 有点陌生,所以我不知道该怎么做。

【问题讨论】:

    标签: c# wpf canvas binding


    【解决方案1】:

    您可以创建一个绑定,如下所示。 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 的转换是由框架隐式完成的。但是,如果您需要一些“缩放”因子,您还必须添加一个绑定转换器。

    【讨论】:

    • 完美运行,谢谢!我缺少的是新的 PropertyPath(Canvas.TopProperty)
    【解决方案2】:

    你可以试试这个:

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

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

    【讨论】:

    • 我在纯 C# 中需要它,而不是 xaml :\
    猜你喜欢
    • 2011-10-22
    • 2016-10-24
    • 2011-05-08
    • 1970-01-01
    • 2014-04-18
    • 2021-09-06
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    相关资源
    最近更新 更多