Clignotant bouton sur l'application WPF
Mon application WPF est un gestionnaire de style que j'ai construit sur le mélange.
Mon problème est le suivant: j'ai une connexion bouton qui clignote de temps en temps et je ne peux pas comprendre comment faire pour supprimer ce comportement.
Voici le code de style pour ma boîte de connexion:
<Style x:Key="LoginBoxGrid" TargetType="{x:Type Grid}">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="/Client;component/Assets/images/LoginBox.png" Stretch="None" TileMode="Tile"/>
</Setter.Value>
</Setter>
<Setter Property="Opacity" Value="0.765"/>
<Setter Property="Width" Value="411"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
<Setter Property="Margin" Value="126,150,0,111"/>
</Style>
<Style x:Key="LoginBoxHeader" TargetType="{x:Type Label}">
<Setter Property="Grid.Column" Value="2"/>
<Setter Property="Margin" Value="-16.183,18.347,0,0"/>
<Setter Property="Width" Value="64.994"/>
<Setter Property="FontSize" Value="16"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="FontStyle" Value="Italic"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="VerticalAlignment" Value="Top"/>
<Setter Property="HorizontalAlignment" Value="Left"/>
<Setter Property="FontFamily" Value="/Client;component/Assets/Fonts/#Arial Black"/>
</Style>
<Style x:Key="LoginBtn" TargetType="{x:Type Button}">
<Setter Property="Grid.Column" Value="2"/>
<Setter Property="Margin" Value="16.6,9.022,9.282,8"/>
<Setter Property="Grid.Row" Value="4"/>
<Setter Property="Width" Value="164"/>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Opacity" Value="0.78"/>
<Setter Property="IsDefault" Value="True"/>
<Setter Property="Foreground" Value="White"/>
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="/Client;component/Assets/images/LoginBtn.png"/>
</Setter.Value>
</Setter>
</Style>
Et voici mon code pour la fenêtre:
<Grid Style="{StaticResource LoginBoxGrid}" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.127*"/>
<ColumnDefinition Width="0.326*"/>
<ColumnDefinition Width="0.462*"/>
<ColumnDefinition Width="0.085*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="0.269*"/>
<RowDefinition Height="0.028*"/>
<RowDefinition Height="0.256*"/>
<RowDefinition Height="0.223*"/>
<RowDefinition Height="0.178*"/>
<RowDefinition Height="0.046*"/>
</Grid.RowDefinitions>
<Label Content="User Name" Grid.Column="1" Margin="43.986,23.1,8,8" Grid.Row="2" Width="82" BorderThickness="0" FontFamily="Arial" FontWeight="Bold" FontStyle="Italic"/>
<Label Content="Password" Grid.Column="1" Margin="43.986,15.873,8,8" Grid.Row="3" Width="82" BorderThickness="0" FontFamily="Arial" FontWeight="Bold" FontStyle="Italic"/>
<PasswordBox Grid.Column="2" Name="PassTb" HorizontalAlignment="Left" Margin="8,18.877,0,8" Grid.Row="3" Width="172.6" d:LayoutOverrides="Height"/>
<TextBox Grid.Column="2" Name="UserTb" HorizontalAlignment="Left" Margin="9.282,23.1,0,11.004" Grid.Row="2" TextWrapping="Wrap" Text="TextBox" Width="172.6" d:LayoutOverrides="Height"/>
<Label Style="{StaticResource LoginBoxHeader}" Content="Login" />
<Button Name="LoginBtn" Style="{StaticResource LoginBtn}" Content="Login" />
</Grid>
Le Bouton dont je parle est appelé "LoginBtn", comme c'est son style.
Comment puis-je supprimer le clignotement de comportement? Merci à l'avance.
changer en c#
Pouvez-vous définir "clignoter" mieux. Voulez-vous dire qu'il passe constamment entre deux états visuels, ou est-il déclenché par quelque chose comme la souris passe dessus?
Pouvez-vous définir "clignoter" mieux. Voulez-vous dire qu'il passe constamment entre deux états visuels, ou est-il déclenché par quelque chose comme la souris passe dessus?
OriginalL'auteur Sivan Wolberg | 2010-10-20
Vous devez vous connecter pour publier un commentaire.
Solution la plus Simple: le bouton Set "peut recevoir le focus" pour de Faux.
Son plus comme hacher votre tête si vous avez un mal de tête.
OriginalL'auteur The Dreamer
Que le clignotant est en raison de la style par défaut qui WPF utilise pour les boutons. Pour être plus précis, c'est en raison de la détente sur le bouton de contrôle du modèle. Pour supprimer ce problème, allez dans le mélange, clic droit sur le bouton et sélectionnez "Modifier le Modèle"->"Modifier une copie". Cliquez sur l'enfant de l'élément du contenu du présentateur (par défaut, c'est le contrôle appelé "Chrome"). Puis, dans l'onglet déclencheurs, inactif RenderDefaulted en appuyant sur le "déclenchement". Que le déclenchement de garder le bouton de clignotant. Si vous voulez juste le code XAML pour tout cela, ici, il est enveloppé par windows.la ressource...
Alors, où que vous bouton, appliquez ce style...
Mise à jour: Le bouton par défaut le style a changé au fil des ans. L'idée est la même, utiliser Blend pour Visual Studio pour modifier le templete de l'élément que vous souhaitez modifier. Pour ce bouton, il suffit de retirer le IsDefaulted déclencher entirly. Voici une mise à jour de l'extrait de code.
ne fonctionne pas, je n'ai pas d'enfant des éléments de contenu du présentateur, et pas de "chrome", ou "RenderDefaulted".
Il apparaît que les choses ont changé depuis 2011. Il n'y a pas de Microsoft_Windows_Themes:ButtonChrome contrôle plus. Maintenant, vous pouvez simplement supprimer le IsDefaulted déclencher entièrement. Je vais mettre à jour ma réponse pour refléter les modifications.
OriginalL'auteur Onosa
Un peu moins gênant façon de supprimer à clignoter serait de définir un nouveau
ControlTemplate
pourButtonBase
avec la délinquance liaisons supprimées.J'ai pris cette via StyleSnooper à partir du Bouton de Style par défaut et remanié et simplifié pour être un Style pour ButtonBase qui fournit simplement un nouveau ControlTemplate*. Pour ce faire, ajoutez un assemblée de référence pour la Présentation.Aero et d'introduire de Microsoft.De Windows.Les thèmes de l'espace de noms dans votre ResourceDictionary.
Ici, j'ai volontairement supprimé le touché du Bouton de la capacité à "clignoter" sur son
IsDefault
de la propriété par le coder en durRenderDefaulted
à faux; vous voudrez aussi de remplacer leRenderMouseOver
objet templatebinding.Ensuite utiliser ce style Basée pour votre Bouton:
(*) Et oui, nous devrions vraiment avoir la capacité à utiliser Basée pour ControlTemplates ainsi...
OriginalL'auteur Jan
J'ai depuis ma première réponse rencontré ce problème lors de la fixation d'images de boutons et j'ai compris par la définition de l'image et le bouton à l'étirement et à l'aide d'un taille sur la frontière, il a résolu le problème.
Exemple de code..
OriginalL'auteur Dave Hanson