2009-02-12 49 views
88

我有一个矩形我XAML并希望在后面的代码改变其属性Canvas.Left如何在后面的代码中访问附加属性?

<UserControl x:Class="Second90.Page" 
    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"> 
    <Canvas> 
     <Rectangle 
      Name="theObject" 
      Canvas.Top="20" 
      Canvas.Left="20" 
      Width="10" 
      Height="10" 
      Fill="Gray"/> 
    </Canvas> 
</UserControl> 

但是,这并不工作:

private void txt_KeyDown(object sender, KeyEventArgs e) 
{ 
    theObject.Canvas.Left = 50; 
} 

有谁知道语法是做什么的这个?

回答

46

尝试此

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

有上的DependencyObject(最WPF类的基础),其允许对所有依赖属性的公共访问的一组的方法。他们是

  • 的SetValue
  • 的GetValue
  • ClearValue

编辑更新了一套使用双字面因为目标类型是双。

+0

谢谢,来得到这个工作,我不得不投射整数:theObject.SetValue(Canvas.LeftProperty,(double)50); – 2009-02-12 15:12:15

+0

不,为此以double格式指定数字常量: heObject.SetValue(Canvas.LeftProperty,50.0); – Budda 2010-08-16 23:24:04

12

我们正在改变“对象”的特性,这将是更好地JaredPar使用方法suggedte:

theObject.SetValue(Canvas.LeftProperty, 50d); 
相关问题