2011-09-27 51 views
0

我想使用LayoutTransform来旋转图像控制,但是我面临的问题是我可以在XMAL中执行此操作,但不能在后面执行代码。从代码中旋转图像

我是新来WPF

这里是XMAL `

<Image Grid.Column="1" Grid.Row="4" Height="155" HorizontalAlignment="Left"  
    Margin="103,0,0,0" Name="image1" Stretch="Fill" VerticalAlignment="Top" Width="139" 
    Source="/7SegmentLed;component/Images/Caster1.png" Grid.RowSpan="2" > 
    <Image.LayoutTransform> 
     <RotateTransform Angle="{Binding AngleSlider}" /> 
    </Image.LayoutTransform> 
    </Image> 

CODE

double AngleSlider = 90.0; 

image1.DataContext = AngleSlider; 

我想从我计算在后面,但事实的值动态更新是我不想改变它是固定的图像,不会改变

这将是伟大的,如果有人让我知道我做错了什么

+0

我不明白,你想旋转它,但你不想改变它? – CodingGorilla

+0

想要旋转图像但不分配新图像 –

回答

2

你的约束是有点关闭;虽然您可以将DataContext设置为double,但您的绑定将试图在您的double上找到名为AngleSlider的属性,但显然不存在。

所以取而代之,创建一个类叫做AngleSlider像这样Double类型的属性:

public class MySliderDataContext : INotifyPropertyChanged 
{ 
    public event PropertyChangedEventHandler PropertyChanged; 

    public double AngleSlider 
    { 
     get { return _angle; } 
     set 
     { 
      _angle = value; 
      if(PropertyChanged != null) 
       PropertyChanged(this, new PropertyChangedEventArgs("AngleSlider")); 
     } 
    }   
} 

创建这个类的一个实例,并将其保存在你的窗口字段,然后分配该实例到DataContext

private MySliderDataContext _sliderAngle; 

image1.DataContext = _sliderAngle; 

现在,必要的时候可以这样做:

_sliderAngle.SliderAngle = 90; 

而且你的图像应该旋转。

+0

完美答案谢谢 –