2013-09-21 378 views
0

我有一个WPF应用程序和画布在那里。在画布中我有一个矩形。在程序已经处理的时候,我怎么能改变他的属性,比如高度或宽度?喜欢的东西:如何更改UIElement的值

int index = 0; 
var childByIndex = canvas.Children[index]; 
childByIndex.SetValue(Height, 15); 
+1

你试过你的代码了吗? –

+0

C:\ Users \ neizv_000 \ Documents \ Visual Studio 2012 \ Projects \ Lab 6.5 \ Lab 6.5 \ MainWindow.xaml.cs(57,17,57,50):错误CS1502:最好的重载方法匹配'System.Windows 1> C:\ Users \ neizv_000 \ Documents \ Visual Studio 2012 \ Projects \ Lab 6.5 \ Lab 6.5 \ MainWindow.xaml.cs(57, 39,57,45):error CS1503:参数1:无法从'double'转换为'System.Windows.DependencyProperty' – Corio

+0

尝试'childByIndex.SetValue(HeightProperty,15);' –

回答

1

你必须告诉你要设置类似下面的DP哪个类型:

((Rectangle)canvas.Children[index]).SetValue(Rectangle.HeightProperty, 15.0); 
+0

是的,我有一个Rectangle,但是你的代码给我一个错误:1> C:\ Users \ neizv_000 \ Documents \ Visual Studio 2012 \ Projects \ Lab 6.5 \ Lab 6.5 \ MainWindow.xaml.cs(57,72,57,86):error CS1061:'bool'不包含'HeightProperty'的定义,并且没有找到接受类型'bool'的第一个参数的扩展方法'HeightProperty'(可以找到) rective或程序集引用?) – Corio

+0

它应该工作..你能检查是否((Rectangle)canvas.Children [index])实际上是返回一个矩形? – Nitin

+0

有些奇怪,在一个项目中起作用,而在另一个项目中不起作用。上面的错误信息是来自不工作的,我试图自己弄清楚。但如果你有一些想法,不要害羞。感谢您的帮助,我一整天都在拷打它。 – Corio

1

最简单的办法是给你的矩形的名称在XAML,然后用它在你的代码:

<Canvas> 
    <Rectangle x:Name="rect" /> 
</Canvas> 
rect.Height = 15; 

如果由于某种原因ÿ OU不能给你一个矩形名字XAML,你可以投你找到对象Rectangle做术前:

Rectangle rect = (Rectangle)childByIndex; 
rect.Height = 15; 

如果您正在寻找在画布改变附加属性,如位置,你可以这样做:

Canvas.SetTop(rect, 10); 
Canvas.SetLeft(rect, 20); 
+0

你的方式也可以,谢谢。但是我没有足够的声望来评价你的答案,对不起。你帮了很多忙。 – Corio