PDA

View Full Version : [WPF] Button mantenere lo stato hover dopo click


robertino_salemi
04-03-2015, 15:35
Ho definito il mio pulsante personalizzato:

<Button Name="editSchedule" Width="60" Height="60"
ToolTip="{StaticResource commandEdit}" ToolTipService.ShowOnDisabled="True"
Click="editSchedule_Click">
<Button.Content>
<Border CornerRadius="2" Margin="0" Padding="5" BorderThickness="2,2,2,2"
BorderBrush="{StaticResource iconMenuColor}" Background="{StaticResource iconMenuBackgroundColor}">
<Path
Width="24" Height="24"
Canvas.Left="15.8333"
Fill="{StaticResource iconMenuColor}"
Canvas.Top="20.5833"
Stretch="Fill"
Data="{StaticResource ToolBarIconModify}"
/>
</Border>
</Button.Content>
<Button.IsEnabled>
<MultiBinding Converter="{StaticResource ActionEnabledConverter}" >
<MultiBinding.Bindings>
<Binding Source="{StaticResource UserInfoViewModel}" Path="Actions"/>
<Binding Source="{StaticResource ModifySchedule}"/>
<Binding Path="IsEnabled"></Binding>
</MultiBinding.Bindings>
</MultiBinding>
</Button.IsEnabled>
</Button>


È perfetto, vorrei aggiungere una nuova condizione: mantenere lo stato hover, quando eseguo un click sul button e rimuovere lo stato hover quando eseguo il click su un altro pulsante, chiamato saveSchedule.

Come posso risolvere il problema?

Grazie.

robertino_salemi
05-03-2015, 09:57
Buongiorno,
ho trovato 1/2 soluzione al mio problema, cioè la parte riguardante lo stato hover al click sul button:
1) Ho convertito il mio Button in ToggleButton
2) Ho aggiunto questo Style basato il Triggers:

<Style TargetType="ToggleButton" x:Key="checkedToggle">
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background" Value="#5fc3f3"/>
</Trigger>
</Style.Triggers>
</Style>

Al click il pulsante mantiene "l'hover", al secondo click lo rimuovere.

Adesso l'altro problema: come faccio a togliere l'hover quando eseguo il click su un secondo button?

Grazie.

[Kendall]
05-03-2015, 10:16
Buongiorno,
ho trovato 1/2 soluzione al mio problema, cioè la parte riguardante lo stato hover al click sul button:
1) Ho convertito il mio Button in ToggleButton
2) Ho aggiunto questo Style basato il Triggers:

<Style TargetType="ToggleButton" x:Key="checkedToggle">
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Background" Value="#5fc3f3"/>
</Trigger>
</Style.Triggers>
</Style>

Al click il pulsante mantiene "l'hover", al secondo click lo rimuovere.

Adesso l'altro problema: come faccio a togliere l'hover quando eseguo il click su un secondo button?

Grazie.

Devi farlo da codice, impostando la proprietà IsChecked del pulsante in oggetto su false;

robertino_salemi
09-03-2015, 10:28
Esatto, la soluzione più semplice.

Grazie. :D