从代码中旋转图像

时间:2011-09-27 19:52:14

标签: c# wpf xaml

我想使用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;

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

如果有人让我知道我做错了什么会很棒

1 个答案:

答案 0 :(得分:2)

你的装订有点偏;虽然您可以将DataContext设置为double,但您的绑定将尝试在您的double上找到名为AngleSlider的属性,这显然不存在。

因此,请创建一个类型为Double的属性的类AngleSlider,如下所示:

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"));
       }
     }           
}

创建此类的实例,并将其保存在Window上的字段中,然后将该实例分配给DataContext

private MySliderDataContext _sliderAngle;

image1.DataContext = _sliderAngle;

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

_sliderAngle.SliderAngle = 90;

你的图像应该旋转。