2011-11-02 5 views
0

Est-il possible d'utiliser un convertisseur/sélecteur de style sans avoir à utiliser la liaison de données?Sélecteur de style/convertisseur sans reliure?

Je souhaite que le style de mon objet change si une certaine valeur est atteinte.

Voici ce que j'ai

<Border Name="watch0_0Border" Grid.Row="0" Grid.Column="0" Style="{StaticResource clockBorderStyle}"> 
     <StackPanel Style="{StaticResource clockStackPanelStyle}"> 
      <TextBlock Name="watch0_0Time" Style="{StaticResource clockTimerStyle}">07:45:23</TextBlock> 
      <TextBlock Name="watch0_0Description" Style="{StaticResource clockTextStyle}" Text="{Binding ElementName=watch0_0WorkDescription, Path=Text}"></TextBlock> 
      <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"> 
       <Button Name="watch0_0Pause" Margin="5" Click="watch0_0Pause_Click">Pause</Button> 
       <Button Name="watch0_0SetNewTime" Margin="5" Click="watch0_0SetNewTime_Click">Set new time</Button> 
      </StackPanel> 
      <StackPanel Orientation="Horizontal" HorizontalAlignment="Center"> 
       <TextBox Name="watch0_0Hours" Margin="5">0</TextBox> 
       <TextBox Name="watch0_0Minutes" Margin="5">0</TextBox> 
       <TextBox Name="watch0_0Seconds" Margin="5">0</TextBox> 
      </StackPanel> 
      <TextBox Name="watch0_0WorkDescription" TextAlignment="Center" Margin="5">Work description</TextBox> 
     </StackPanel> 
    </Border> 

Je veux canhe l'arrière-plan de la frontière lorsque le temps passe sous 0

+0

Cela dépend de la façon dont la valeur est modifiée (par exemple, est-ce une valeur mise à jour automatiquement ou est-elle modifiée par l'utilisateur)? Que diriez-vous d'utiliser un trigger/datatrigger/eventtrigger? – KBoek

+1

Pourquoi vous n'aimez pas une reliure? Vous pouvez l'utiliser avec une valeur personnalisée (pas liée à un DataContext) – sll

+0

J'utilise également habituellement la liaison, mais c'est juste pour un projet rapide. Je veux changer l'arrière-plan quand une minuterie passe sous zéro. – Sulby

Répondre

1

Si votre minuterie a accès à la fenêtre principale (qui peut accéder watch0_0Border) ou watch0_0Border directe (en passant ceux-ci lorsque le minuteur a été créé) alors vous devriez juste pouvoir utiliser le répartiteur d'interface utilisateur pour définir watch0_0Border.BorderBrush (ou toute autre propriété) lorsque le minuteur atteint zéro.

+0

Juste ce que je cherchais ... Je ne sais pas pourquoi je n'ai pas pensé à ça moi-même: S – Sulby