如何仅通过C#中的代码绑定对象的Canvas.Top和Panel.ZIndex属性?我想要获得的效果最多的是对象在画布上(较高的顶部值),其Z属性越高。我对WPF很陌生,所以我无法理解如何做到
答案 0 :(得分:0)
你可以试试这个:
<Canvas>
<Border Panel.ZIndex="{Binding Location, Converter={StaticResource DoubleToIntConverter}}" Canvas.Top="{Binding Location}"/>
</Canvas>
DoubleToIntConverter是一个转换器,它接受一个Double并返回一个int。 位置是存储在ViewModel中的Double。
答案 1 :(得分:0)
您可以创建一个Binding,如下所示。 sys.path.append(os.path.dirname(sys.executable))
字符串中的parantheses是必需的,因为source属性是附加属性。
Path
您也可以直接将源DependencyProperty传递给PropertyPath构造函数,如下所示:
element.SetBinding(Panel.ZIndexProperty,
new Binding
{
RelativeSource = RelativeSource.Self,
Path = new PropertyPath("(Canvas.Top)")
});
从element.SetBinding(Panel.ZIndexProperty,
new Binding
{
RelativeSource = RelativeSource.Self,
Path = new PropertyPath(Canvas.TopProperty)
});
到double
的转换由框架隐式完成。但是,如果您需要一些“缩放”因子,您还必须添加一个Binding Converter。