WPF Bouton isPressed et isEnabled problème
Mise à jour: utiliser Expression Blend 3
Je suis en train de style de la IsPressed & IsEnabled(faux) propriété déclencheurs pour une classe de boutons dans une application WPF.
Voici un UserControl avec un Bouton, en utilisant le style...
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="Kiosk.ButtonTest"
x:Name="UserControl">
<Grid x:Name="LayoutRoot">
<Button HorizontalAlignment="Left" Style="{DynamicResource BlueButton}" VerticalAlignment="Top" Width="155" Content="Button" Height="52.9"/>
</Grid>
</UserControl>
Et voici le style fragment...
<!-- Blue Button -->
<Style x:Key="BlueButton" TargetType="{x:Type Button}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{DynamicResource BlueGradient3}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="{DynamicResource DarkGradient1}"/>
<Setter Property="BorderBrush" Value="{DynamicResource BlueGradient3}"/>
</Trigger>
<Trigger Property="IsPressed" Value="True">
<Setter Property="Background" Value="{DynamicResource DarkGradient1}"/>
<Setter Property="BorderBrush" Value="{DynamicResource BlueGradient1}"/>
</Trigger>
</Style.Triggers>
<Setter Property="FocusVisualStyle" Value="{StaticResource ButtonFocusVisual}"/>
<Setter Property="Background" Value="{DynamicResource BlueGradient1}"/>
<Setter Property="BorderBrush" Value="{DynamicResource BlueGradient2}"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="TextBox.TextAlignment" Value="Center"/>
<Setter Property="FontFamily" Value="Trebuchet MS"/>
<Setter Property="FontSize" Value="18"/>
<Setter Property="Effect" Value="{DynamicResource KioskStandardDropShadow}" />
</Style>
<LinearGradientBrush x:Key="BlueGradient1" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF3FA2FD" Offset="0"/>
<GradientStop Color="#FF014782" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="BlueGradient2" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF014782" Offset="0"/>
<GradientStop Color="#FF3FA2FD" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="BlueGradient3" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF014782" Offset="1"/>
<GradientStop Color="#FF0B2135" Offset="0"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="DarkGradient1" EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF2A2A2A" Offset="0"/>
<GradientStop Color="#FF474747" Offset="0.478"/>
<GradientStop Color="#FF323232" Offset="0.487"/>
<GradientStop Color="Black" Offset="1"/>
<GradientStop Color="#FF282828" Offset="0.681"/>
</LinearGradientBrush>
<!-- Regular Drop Shadow -->
<DropShadowEffect x:Key="KioskStandardDropShadow" Opacity="0.6" BlurRadius="10" ShadowDepth="5" Direction="308"/>
<!-- fragment end -->
La valeur par Défaut et la Souris sur les changements de bien fonctionner, mais isEnabled faux et isPressed vrai montrent toujours le Bouton de couleurs par défaut.
Ce que je fais mal?
j'ai essayé ton code et il fonctionne pour moi : par défaut, bleu clair, du passage de la souris-bleu foncé, IsPressed-Gris, Désactivé - de-Gris. toutefois, j'ai supprimé setter pour FocusVisualStyle parce que vous n'avez pas l'inclure.
Ce n'est pas une réponse, je sais, mais essayez le Visual State Manager.
Vous pouvez modifier votre question à ajouter du code supplémentaire plutôt que de poster un commentaire.
Ce n'est pas une réponse, je sais, mais essayez le Visual State Manager.
Vous pouvez modifier votre question à ajouter du code supplémentaire plutôt que de poster un commentaire.
OriginalL'auteur ocodo | 2010-08-19
Vous devez vous connecter pour publier un commentaire.
J'ai corrigé après avoir étudié le code à http://mark-dot-net.blogspot.com/2007/07/creating-custom-wpf-button-template-in.html...
C'est ce que j'ai fini avec, qui fonctionne très bien.
OriginalL'auteur ocodo
Vous avez besoin pour remplacer la ControlTemplate pour changer la couleur d'arrière-plan de votre bouton.
Ici est celle que j'ai copié à partir de MSDN qui fonctionne bien avec votre code.
Vous pouvez fusionner vos remplacements de ce style.
EDIT:
De travail de style, comme, vous devez télécharger le Style avec des Modèles de Contrôle de l'Échantillon de Microsoft. Si vous incluez le Bouton.xaml et Partagée.xaml à partir de l'échantillon suivant le style de travail, car ces deux fichiers contiennent tous les StaticResoruces répertorié les XAML ci-dessous. Je suis en train de tester dans Visual Studio 2008.
Ici est de savoir comment je chanaged l'utilisateur conttrol:
Ici est la partie du style de bouton de Bouton de.xaml:
J'ai ajouté les références à l'endroit où trouver la StaticResources.
Malheureusement, Style avec ControlTemplates, Exemple ne fonctionne pas avec Expression Blend 3. Mais c'est ok, j'ai ajouté une réponse qui travaille avec elle.
Fonctionne très bien pour moi dans le Mélange de 3. J'ai besoin de Bouton ouvrir.le code xaml comme une ressource, mais le message de Mélange rend évidente.
OriginalL'auteur Zamboni