Как изменить цвет фона кнопки в зависимости от связанной команды canexecute? - PullRequest
4 голосов
/ 31 марта 2010

У меня есть ItemTemplate, в котором есть простая кнопка, привязанная к команде, которая может быть исполняемой или нет в зависимости от некоторого свойства.

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

Вот мой код для кнопки:

<Button x:Name="Dispo" HorizontalAlignment="Center" Margin="0" VerticalAlignment="Center" Width="30" Height="30" 
        Grid.Column="2" Grid.Row="0"
        Command="{Binding AddEmpruntCommandModel.Command}"
        CommandParameter="{Binding ElementName='flowCars', Path='SelectedItem'}"
        vm:CreateCommandBinding.Command="{Binding AddEmpruntCommandModel}" >
     <Button.Style>
        <Style TargetType="{x:Type Button}">
           <Style.Triggers>
               <Trigger Property="IsEnabled" Value="True">
                   <Setter Property="Button.Background" Value="Green"/>
               </Trigger>
               <Trigger Property="IsEnabled" Value="False">
                   <Setter Property="Button.Background" Value="Red"/>
               </Trigger>
           </Style.Triggers>
        </Style>
     </Button.Style>
  </Button>

1 Ответ

0 голосов
/ 01 апреля 2010

Вы можете указать свой собственный шаблон так:

<Button Content="OK" Command="{Binding SomeCommand}">
    <Button.Style>
        <Style>
            <Setter Property="Button.Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Border x:Name="Border" Background="Green">
                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
                        </Border>
                        <ControlTemplate.Triggers>                                        
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter TargetName="Border" Property="Background" Value="Red" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Button.Style>
</Button>
...