2009-04-22 8 views
1

Sans utiliser de code, comment puis-je le transformer en modèle?Comment puis-je faire de ce Xaml un modèle?

J'ai environ 10 d'entre eux, et mon code devient énorme. Cela fonctionne parfaitement, je cherche juste des moyens de nettoyer le code, je ne suis pas assez familier avec les animations et les déclencheurs de templates et de ressources pour le faire.

Merci d'avance.

<RadioButton Width="35" Height="35" Content="RadioButton" Visibility="Visible" IsChecked="False" Margin="2.5,2.5,2.5,2.5" Template="{DynamicResource RadioTemplate}" > 
     <RadioButton.Resources> 
      <ControlTemplate x:Key="RadioTemplate" TargetType="{x:Type RadioButton}"> 
       <BulletDecorator Background="Transparent"> 
        <BulletDecorator.Bullet> 
         <StackPanel> 
          <Image Width="Auto" Height="Auto" Source="..\Content\img.png" Stretch="Fill" /> 
         </StackPanel> 
        </BulletDecorator.Bullet> 
       </BulletDecorator> 
      </ControlTemplate> 
     </RadioButton.Resources> 
     <RadioButton.BitmapEffect> 
      <OuterGlowBitmapEffect x:Name="imageGlow" GlowColor="#FFeeba00" Opacity="1" GlowSize="0" /> 
     </RadioButton.BitmapEffect> 
     <RadioButton.Triggers> 
      <EventTrigger RoutedEvent="ToggleButton.Checked"> 
       <BeginStoryboard> 
        <Storyboard> 
         <DoubleAnimation Storyboard.TargetName="imageGlow" Storyboard.TargetProperty="GlowSize" From="0" To="10" Duration="0:0:.15" AutoReverse="False" /> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 
      <EventTrigger RoutedEvent="ToggleButton.Unchecked"> 
       <BeginStoryboard> 
        <Storyboard> 
         <DoubleAnimation Storyboard.TargetName="imageGlow" Storyboard.TargetProperty="GlowSize" From="10" To="0" Duration="0:0:.15" AutoReverse="False" /> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 
     </RadioButton.Triggers> 
    </RadioButton> 

Répondre

3

Vous devez créer un style.

<Style x:Key="RadioStyle" TargetType="{x:Type RadioButton}"> 
    <Setter Property="Width" Value="35"/> 
    <Setter Property="Height" Value="35"/> 
    <Setter Property="Margin" Value="2.5"/> 
    <Setter Property="BitmapEffect"> 
     <Setter.Value> 
      <OuterGlowBitmapEffect GlowColor="#FFeeba00" Opacity="1" GlowSize="0" /> 
     </Setter.Value> 
    </Setter> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type RadioButton}"> 
       <BulletDecorator Background="Transparent"> 
        <BulletDecorator.Bullet> 
         <StackPanel> 
          <ContentPresenter/> 
         </StackPanel> 
        </BulletDecorator.Bullet> 
       </BulletDecorator> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
<!--Continued--> 

Et le reste (semble SO couper des extraits longs de code):

<Style.Triggers> 
     <EventTrigger RoutedEvent="ToggleButton.Checked"> 
      <BeginStoryboard> 
       <Storyboard> 
        <DoubleAnimation Storyboard.TargetProperty="BitmapEffect.GlowSize" From="0" To="10" Duration="0:0:.15" AutoReverse="False" /> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
     <EventTrigger RoutedEvent="ToggleButton.Unchecked"> 
      <BeginStoryboard> 
       <Storyboard> 
        <DoubleAnimation Storyboard.TargetProperty="BitmapEffect.GlowSize" From="10" To="0" Duration="0:0:.15" AutoReverse="False" /> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </Style.Triggers> 
</Style> 

Pour chaque bouton, vous aurez quelque chose comme ceci:

<RadioButton Style="{DynamicResource RadioStyle}" Visibility="Visible" IsChecked="False"> 
    <Image Width="Auto" Height="Auto" Source="..\Content\img.png" Stretch="Fill" /> 
</RadioButton> 
+0

Vous pouvez ajouter propriétés restantes au style, mais je pensais que certaines propriétés varieraient pour chaque bouton: Contenu, Visibilité, IsChecked. –

+0

Il se peut que vous deviez également modifier d'autres propriétés (Hauteur, Largeur, Marge). Supprimez-les simplement du style et ajoutez-les à chaque bouton. Vous pouvez également remplacer la valeur de style par une nouvelle valeur locale si nécessaire. –

+0

qu'en est-il de l'image? –

Questions connexes