Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改Canvas.Left属性在代码隐藏中?_C#_Wpf_Code Behind_Attached Properties - Fatal编程技术网

C# 更改Canvas.Left属性在代码隐藏中?

C# 更改Canvas.Left属性在代码隐藏中?,c#,wpf,code-behind,attached-properties,C#,Wpf,Code Behind,Attached Properties,我的XAML中有一个矩形,希望更改其画布。代码隐藏中的Left属性: 但这不起作用: private void txt_KeyDown(object sender, KeyEventArgs e) { theObject.Canvas.Left = 50; } 有人知道这样做的语法吗?试试这个 theObject.SetValue(Canvas.LeftProperty, 50d); DependencyObject(大多数WPF类的基础)上有一组方法,允许对所有依赖属性进行公共

我的XAML中有一个矩形,希望更改其
画布。代码隐藏中的Left
属性:


但这不起作用:

private void txt_KeyDown(object sender, KeyEventArgs e)
{
    theObject.Canvas.Left = 50;
}
有人知道这样做的语法吗?

试试这个

theObject.SetValue(Canvas.LeftProperty, 50d);
DependencyObject(大多数WPF类的基础)上有一组方法,允许对所有依赖属性进行公共访问。是的

  • 设定值
  • GetValue
  • 净值
Edit更新了集合以使用双精度文本,因为目标类型是双精度文本

Canvas.SetLeft(theObject, 50)

由于我们正在更改“对象”的属性,最好使用JaredPar建议的方法:

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

谢谢,为了让它工作,我必须强制转换整数:theObject.SetValue(Canvas.LeftProperty,(double)50);否,为此指定双精度格式的数值常量:heObject.SetValue(Canvas.LeftProperty,50.0)+1、必须热爱类型安全。我很好奇为什么SetLeft使用UIElement而不是DependencyObject@JaredPar:大概我会说,由于SetLeft是一种特殊的Canvas方法,因此它理解将Left属性赋予哪些类型是有意义的。它认为这是UIElement,这可能会增加错误代码的检测,因为错误的变量意外地传递给它。Left是一个附加属性,它支持XAML用法。在代码中设置此属性时,请改用SetLeft。