Как отключить кнопку со свойством Command в Silverlight 4 - PullRequest
2 голосов
/ 14 сентября 2010

У меня есть кнопка, которая имеет свойство Command.Однако я хочу, чтобы эта кнопка была отключена (пользователь не может нажать на нее), пока не будет нажата другая кнопка.Например, пользователь может нажать на кнопку «Сохранить» только после нажатия кнопки «Создать»

. Поэтому я делаю следующее

<telerik:RadButton Content="Save" Height="22" HorizontalAlignment="Right" Margin="0,0,72,25" Name="saveRBtn" VerticalAlignment="Bottom" Width="43" Grid.Column="5" Grid.Row="4" 
                       IsEnabled="False"
                       Command="{Binding Path=LoadCommand, ElementName=documentLineDomainDataSource}" 
                       Click="saveRBtn_Click"/>

Однако, похоже, что кнопка не будетотключен с параметром IsEnabled = False, если у меня есть свойство Command, когда я беру свойство команды из кода, тогда параметр IsEnabled = false работает нормально

не уверен, почему параметр IsEnabled не будет работать, если свойство Commandподарки.

PLZ, помогите мне

спасибо

Ответы [ 2 ]

4 голосов
/ 14 сентября 2010

Кнопка может работать с или без команды. Вы используете событие Click и свойство IsEnabled, если не используете команду. Они имеют приоритет над Командой, поскольку они более «прямые» (и были в Silverlight до того, как они поддерживали свойство Command).

Обычно, если вы используете команду, вы не устанавливаете IsEnabled и не обрабатываете событие Click. Кнопка будет включена, если команда может быть выполнена (свойство CanExecute), и она вызовет метод Execute кнопки.

Чтобы ответить на ваш вопрос, вы должны удалить настройку IsEnabled и обработчик щелчков и сделать все через объект Command.

1 голос
/ 27 января 2012

Просмотреть код модели

public const string IsEnabledPropertyName = "IsEnabled";

private bool _IsEnabled = false;

public bool IsEnabled
{
    get
    {
        return _IsEnabled;
    }

    set
    {
        if (_IsEnabled == value)
        {
            return;
        }

        _IsEnabled = value;

        // Update bindings, no broadcast
        RaisePropertyChanged(IsEnabledPropertyName);
    }
}

попробуйте это .......

, потому что свойство Istons IsNnabled Buttons должно иметь более высокий приоритет, чем возвращаемое значение из CanExecuteМетод команды Вы также можете изучить эту ветку форума.Таким образом, в настоящее время вы не можете использовать свойства IsEnabled и Command, вам придется использовать только метод CanExecute только для управления состоянием кнопки.

...