2014-12-08 2 views
1

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

Для этого я отключил кнопку, и я меняю ее фон, чтобы показать, что действие, которое выполняется, - это действие, которое я запускаю, когда я нажимаю эту кнопку.

У меня есть конвертер, потому что в моей модели просмотра у меня есть свойство bool, которое устанавливает, было ли действие запущено или если действие закончено. Чтобы преобразовать этот bool в фоновый цвет, я использую конвертер.

Ну, проблема в том, что если я отключил кнопку, невозможно установить фон с помощью конвертера.

Я хотел бы знать, как я могу это сделать, отключить кнопку и изменить обратный отсчет с помощью конвертера.

Мой код на мой взгляд, модель

private async void componentesAsignar() 
{ 

    Bussy = true; //need for the converter, to set the background 
    MyActionStarted = true; //need to disabled the button 

    await Task.Delay(10000); //the code that takes many time 
} 

Мой код на мой взгляд

<Button Content="MyAction" Height="23" Name="btnMyAction" Width="75" 
    Background="{Binding MyActionStarted, Converter={StaticResource actionInProgressToColorConverter}}"> 

Мой конвертер

object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture) 
{ 
    if(((bool)value) == false) 
    { 
     return "#FFDDDDDD"; 
    } 
    else 
    { 
     return "#FF589FF3"; 
    } 
} 

Спасибо так много.

+0

Как вы отключив кнопку? –

+0

Почему бы вам не поставить DataTrigger на Bussy на вашу кнопку, поэтому, когда он равен True, вы отключите его и измените его фон? – nkoniishvt

ответ

1

Вместо того, чтобы использовать конвертер я хотел бы использовать DataTrigger:

<Button ...> 
    <Button.Style> 
     <Style TargetType="{x:Type Button}"> 
      <Setter Property="Background" Value="#FFDDDDDD"/> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Bussy, Mode=OneWay}" Value="True"> 
        <Setter Property="IsEnabled" Value="False"/> 
        <Setter Property="Background" Value="#FF589FF3"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 
</Button> 
Смежные вопросы