2011-09-27 2 views
0

Je souhaite faire pivoter Image Control en utilisant LayoutTransform mais le problème auquel je suis confronté est que je peux le faire en XMAL mais pas en code.Faire pivoter l'image à partir du code

Je suis nouveau à WPF

ici est 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> 

et CODE

double AngleSlider = 90.0; 

image1.DataContext = AngleSlider; 

je veux mettre à jour dynamiquement à partir des valeurs i calculer à l'arrière, mais le fait est que je ne veux pas changer l'image, il est fixe et ne changera pas

ce serait génial si quelqu'un me fait savoir ce que je fais mal

+0

Je ne comprends pas, vous voulez le faire pivoter, mais vous ne voulez pas le changer? – CodingGorilla

+0

voulez faire pivoter l'image mais ne pas attribuer une nouvelle image –

Répondre

2

Votre liaison est un peu large; alors que vous pouvez définir le DataContext en double, votre liaison va tenter de trouver une propriété appelée AngleSlider sur votre double, ce qui n'est évidemment pas là.

Ainsi, au lieu, créer une classe avec une propriété de type Double appelé AngleSlider comme ceci:

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

Créer une instance de cette classe, et l'enregistrer dans un champ sur votre fenêtre, puis attribuez-lui cette instance à la DataContext:

private MySliderDataContext _sliderAngle; 

image1.DataContext = _sliderAngle; 

maintenant, si nécessaire, vous pouvez faire:

_sliderAngle.SliderAngle = 90; 

Et votre image devrait tourner.

+0

réponse parfaite merci –

Questions connexes