2009-10-21 7 views
0

J'ai un tas de ContentControls avec un DataTemplate comme ceci:Accès à une RenderTransform dans un DataTemplate dans Silverlight

<DataTemplate>   
     <Canvas> 
      <Canvas.RenderTransform> 
       <TransformGroup> 
        <ScaleTransform ScaleX="1.0" ScaleY="1.0"/> 
       </TransformGroup> 
      </Canvas.RenderTransform> 
     </Canvas> 
    </DataTemplate> 

... et je veux changer leurs échelles dynamiquement. Je suis nouveau à .NET, alors pardonnez s'il vous plaît. J'ai essayé d'utiliser cette technique:

http://msdn.microsoft.com/en-us/library/bb613579.aspx

... mais DataTemplates ne semble pas avoir FindName dans Silverlight. J'ai alors essayé de lier les échelles comme suit:

<ScaleTransform ScaleX="{Binding Scale}" ScaleY="{Binding Scale}"/> 

... mais j'ai reçu une erreur XAML quand j'ai couru.

Est-ce que j'aboie le mauvais arbre? Je pense que cela doit être possible d'une manière ou d'une autre.

Merci.

+0

Etes-vous en train d'essayer de les faire tous évoluer à la même valeur ou doivent-ils être mis à l'échelle séparément? – Bryant

Répondre

0

En supposant que vous ne voulez pas animer l'échelle, ajoutez simplement une propriété Scale dans votre modèle de vue. Vous ne pouvez pas accéder à un DataContext ancêtre à l'intérieur d'un DataTemplate (WPF le supporte cependant). Au lieu de définir DataContext de votre DataTemplate sur votre entité, créez une classe wrapper (ViewModel) qui inclut également une propriété scale (INotifyPropertyChanged-firing) Scale. Votre ContentControl peut maintenant se lier à la propriété Scale de votre modèle de vue.

+0

Merci pour l'aide! –

+0

De rien! –

Questions connexes