【问题标题】:How to change a value of UIElement如何更改 UIElement 的值
【发布时间】:2013-09-21 17:27:23
【问题描述】:

我有一个 WPF 应用程序和 Canvas。在画布中,我有一个矩形。当程序已经在处理时,如何更改他的属性,例如高度或宽度?类似的东西:

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

【问题讨论】:

  • 你的代码试过了吗?
  • 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.DependencyObject.SetValue(System.Windows.DependencyProperty, object)' 的方法匹配有一些无效参数 1>C:\Users\neizv_000\Documents\Visual Studio 2012\Projects\Lab 6.5\Lab 6.5\MainWindow。 xaml.cs(57,39,57,45):错误 CS1503:参数 1:无法从“double”转换为“System.Windows.DependencyProperty”
  • 试试childByIndex.SetValue(HeightProperty, 15);

标签: c# wpf canvas uielement


【解决方案1】:

你必须告诉你要设置哪种类型的 dp,如下所示:

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

【讨论】:

  • 是的,我有一个矩形,但您的代码给了我一个错误:1>C:\Users\neizv_000\Documents\Visual Studio 2012\Projects\Lab 6.5\Lab 6.5\MainWindow.xaml。 cs(57,72,57,86): 错误 CS1061: 'bool' 不包含'HeightProperty' 的定义,并且找不到接受'bool' 类型的第一个参数的扩展方法'HeightProperty'(您是否缺少使用指令还是程序集引用?)
  • 它应该可以工作.. 你能检查一下 ((Rectangle)canvas.Children[index]) 是否真的返回一个矩形?
  • 有些奇怪,在一个项目中它可以工作,而在另一个项目中则不行。上面的错误消息来自不工作的一个,我l try to figure it out on my own. But if you have some ideas, dont 害羞。感谢您的帮助,我整天都在折磨它。
【解决方案2】:

最简单的方法是在 XAML 中为矩形命名,然后在代码中使用它:

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

如果由于某种原因您无法在 XAML 中为矩形命名,您可以在执行操作之前将找到的对象转换为 Rectangle

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

如果您要更改附加属性,例如画布中的位置,您可以这样做:

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

【讨论】:

  • 你的方法也行,谢谢。但我没有足够的声誉来评价你的答案,对不起。你帮了很多忙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-01
  • 2013-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多