2012-03-03 3 views
1

Je souhaite disposer d'une propriété de modèle pour mon modèle de bouton personnalisé comprenant différentes options qui affectent le contenu d'une image.Comment définir dynamiquement les options de propriétés de modèle

I.e.

  1. Fermer
  2. Maximize
  3. Restaurez
  4. Réduire au minimum

Ainsi, lorsque l'utilisateur du contrôle veut définir le type de bouton pour maximiser, ils perceront d'une liste déroulante Dans l'inspecteur des propriétés, la source du contrôle d'image incorporé dans le bouton devient "{DynamicResource MaximiseGlyph}".

Comment puis-je permettre à l'utilisateur de sélectionner le modèle pour le bouton qui va ensuite choisir la source de contrôle d'image appropriée?

est ici le code de base actuel de mon modèle de bouton:

<Style x:Key="WindowControlButton" TargetType="{x:Type Button}"> 
    <Style.Resources> 
     <BitmapImage x:Key="RestoreGlyph" CreateOptions="IgnoreImageCache" CacheOption="OnLoad" UriSource="\Restore.png"/> 
     <BitmapImage x:Key="MaximiseGlyph" CreateOptions="IgnoreImageCache" CacheOption="OnLoad" UriSource="\Maximise.png"/> 
     <BitmapImage x:Key="CloseGlyph" CreateOptions="IgnoreImageCache" CacheOption="OnLoad" UriSource="\Close.png"/> 
     <BitmapImage x:Key="MinimiseGlyph" CreateOptions="IgnoreImageCache" CacheOption="OnLoad" UriSource="\Minimise.png"/> 
    </Style.Resources> 
    <Setter Property="Template"> 
     <Setter.Value> 
      <ControlTemplate TargetType="{x:Type Button}"> 
       <Grid> 
        <Ellipse Fill="Black" Opacity="0.7"> 
         <Ellipse.Stroke> 
          <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0"> 
           <GradientStop Color="White" Offset="0"/> 
           <GradientStop Color="#FFB8B8B8" Offset="1"/> 
          </LinearGradientBrush> 
         </Ellipse.Stroke> 
        </Ellipse> 
        <Image Source="{DynamicResource RestoreGlyph}"/> 
       </Grid> 
       <ControlTemplate.Triggers> 
        <Trigger Property="IsFocused" Value="True"/> 
        <Trigger Property="IsDefaulted" Value="True"/> 
        <Trigger Property="IsMouseOver" Value="True"/> 
        <Trigger Property="IsPressed" Value="True"/> 
        <Trigger Property="IsEnabled" Value="False"/> 
       </ControlTemplate.Triggers> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style> 
+0

Pouvez-vous préciser votre question est? – kaj

+0

Eh bien comment puis-je définir la propriété d'un modèle à l'une des quatre valeurs puis faire cette valeur que l'utilisateur sélectionne changer la propriété de la source d'une image à l'intérieur du bouton à l'une des quatre valeurs – Kian

Répondre

1

Vous devez créer un contrôle personnalisé héritant d'un bouton pour enregistrer votre nouvelle propriété et permettre à votre modèle à lier à elle.

Vous pouvez suivre ce tutoriel pour créer un contrôle personnalisé

http://wpftutorial.net/HowToCreateACustomControl.html

+0

Merci, j'ai eu un sentiment que je devrais créer un contrôle personnalisé, mais je voulais éviter cela en faveur d'un modèle de contrôle. Serais-je capable d'utiliser mon code existant et de l'intégrer dans le contrôle personnalisé en utilisant le modèle de contrôle avec un conteneur de contenu puis d'utiliser le contrôle personnalisé comme un wrapper pour exposer les options qui définissent le contenu à un Kian

Questions connexes