在代码后台更改 Canvas.Left 属性?

14 浏览
0 Comments

在代码后台更改 Canvas.Left 属性?

我在XAML中有一个矩形,并且想在代码中改变它的Canvas.Left属性:

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Width="400" Height="300" KeyDown="txt_KeyDown">

Name="theObject"

Canvas.Top="20"

Canvas.Left="20"

Width="10"

Height="10"

Fill="Gray"/>

但是这样不起作用:

private void txt_KeyDown(object sender, KeyEventArgs e)

{

theObject.Canvas.Left = 50;

}

有人知道如何正确语法吗?

0
0 Comments

问题的出现原因是在代码中需要改变Canvas.Left属性的值。然而,直接在代码中改变这个属性的值可能会导致一些问题。为了解决这个问题,可以采用JaredPar提供的方法:theObject.SetValue(Canvas.LeftProperty, 50d);

解决方法就是使用SetValue方法来改变Canvas.Left属性的值。这个方法可以接受两个参数,第一个参数是要改变的属性,第二个参数是要设置的值。在这个例子中,我们需要改变的属性是Canvas.LeftProperty,要设置的值是50d。

通过使用SetValue方法,我们可以避免直接改变属性值可能引发的问题。这种方法更加安全可靠,因为它会处理属性值的更新并触发相应的事件。

总结起来,要在代码中改变Canvas.Left属性的值,可以使用SetValue方法,并传入要改变的属性和要设置的值作为参数。这样可以避免可能出现的问题,并确保属性值的正确更新。

0
0 Comments

问题的原因是在代码中更改了Canvas.Left属性,但是没有成功。解决方法是使用DependencyObject类的SetValue方法来设置属性的值。代码应该使用double格式来指定数值常量。以下是完整的

尝试这样做:

theObject.SetValue(Canvas.LeftProperty, 50d);

在WPF的大多数类的基类DependencyObject上有一组方法,允许对所有依赖属性进行常规访问。它们是:

- SetValue

- GetValue

- ClearValue

感谢更新,使用双精度字面量来设置值,因为目标类型是double。

theObject.SetValue(Canvas.LeftProperty, 50d);

不,应该在这里使用双精度格式的数值常量:

theObject.SetValue(Canvas.LeftProperty, 50.0);

以上就是解决问题的原因和解决方法。

0
0 Comments

问题的出现原因:

在上述代码中,使用了Canvas.SetLeft方法来设置一个UIElement的左边距属性(Canvas.Left)。然而,代码中传递的参数类型是UIElement,而不是DependencyObject。为什么SetLeft方法接收UIElement参数而不是DependencyObject参数呢?可能的猜测是,由于SetLeft方法是Canvas类的特定方法,它了解哪些类型应该具有Left属性。它认为UIElement是具有Left属性的类型,这样可以提高检测到错误代码的几率,避免意外地将错误的变量传递给它。

解决方法:

根据Microsoft官方文档中的说明,Canvas.Left是一个附加属性(Attached Property),支持在XAML中使用。当在代码中设置这个属性时,应该使用SetLeft方法。

因此,解决这个问题的方法是将代码中的Canvas.SetLeft(theObject, 50)修改为Canvas.SetLeft(theObject, 50)。

参考链接:

https://msdn.microsoft.com/en-us/library/windows.ui.xaml.controls.canvas.left.aspx

0