2014-09-02 1 views
0

Я ищу для реализации этой функции: кнопка, привязанная к команде, которая может сигнализировать о том, что команда была успешной в виде красной или зеленой вспышки. В то же время, я хочу, чтобы кнопка выглядела как другие кнопки.Кнопка Wpf с обоими результирующими файлами раскадровки и фоновой подсветкой

Это код, у меня сейчас:

<Button IsEnabled="{Binding EmptyingAllowed}" Content="Töm lista" Foreground="#555555" FontWeight="SemiBold" Height="20" Width="65" Command="{Binding EmptyListCommand}" > 
     <Button.Style> 
      <Style TargetType="Button"> 
       <Setter Property="Template"> 
        <Setter.Value> 
         <ControlTemplate TargetType="Button"> 
          <Border BorderBrush="#BBBBBB" Padding="1" BorderThickness="0,0,1,1" Background="#DDDDDD"> 
            <Grid Background="{TemplateBinding Background}"> 
             <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" /> 
            </Grid> 
           </Border> 
          </ControlTemplate> 
         </Setter.Value> 
        </Setter> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding ClearedOk}" Value="Ok"> 
          <DataTrigger.EnterActions> 
           <BeginStoryboard> 
            <Storyboard> 
             <ColorAnimation AccelerationRatio="0.2" DecelerationRatio="0.01" AutoReverse="True" Duration="0:0:1" To="LawnGreen" Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)"/> 
            </Storyboard> 
           </BeginStoryboard> 
          </DataTrigger.EnterActions> 
         </DataTrigger> 
         <DataTrigger Binding="{Binding ClearedOk}" Value="Error"> 
          <DataTrigger.EnterActions> 
           <BeginStoryboard> 
            <Storyboard> 
             <ColorAnimation AccelerationRatio="0.2" DecelerationRatio="0.01" AutoReverse="True" Duration="0:0:1" To="Red" Storyboard.TargetProperty="(Button.Background).(SolidColorBrush.Color)"/> 
            </Storyboard> 
           </BeginStoryboard> 
          </DataTrigger.EnterActions> 
         </DataTrigger> 
        </Style.Triggers> 
       </Style> 
      </Button.Style> 
     </Button> 

Когда команда будет выполнена, ClearedOk установлен на «Ok» или «Error», а затем «Empty», это вызывает вспышку я к сожалению, обычный mouseOver-эффект по какой-то причине теряется, и если я добавляю mouseOver-trigger, он всегда имеет приоритет над мигающим эффектом, то есть вспышка видна только кнопкой, а не mouseOver: ed.

Есть ли решение для этого?

+0

этот код работает прямо сейчас? потому что я не вижу ни одной вспышки и всего материала –

+0

@ MårtenThurén вы попробовали установить 'FillBehavior =" Stop "' против 'ColorAnimation'? – dkozl

+0

Dhaval, да, действительно ли вы правильно настроили настройку ClearedOk? То, как я это делаю, я настраиваю его на Ok, затем на Empty сразу после этого. –

ответ

0

Попробуйте сделать datatemplate и модель со свойствами состояния, а затем привязать шаблон к этой недвижимости.

<DataTemplate x:Key="DataTemplate"> 
     <Grid > 
      <Ellipse Stroke="White" 
        StrokeThickness="5" 
        Fill="{Binding State, Converter={StaticResource CheckToColorConverter}}"/> 
     </Grid> 
    </DataTemplate> 
+0

Извините, я не понимаю этого достаточно хорошо, чтобы понять, как он вписывается в мое решение. –