другой день, другая проблема. Честно говоря, было бы довольно скучно, если бы это прекратилось, не так ли?
РЕДАКТИРОВАТЬ: Кажется, что вся фоновая информация устарела. Вот выложенная версия:
Мой класс Command устанавливает CanExecuteChanged с событием CommandManagers RequerySuggested (как описано здесь: Реализация пользовательской ICFmand WPF и событие CanExecuteChanged ).
public abstract class CommandBase : ICommand
{
public abstract void Execute(object parameter);
public abstract bool CanExecute(object parameter);
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
}
В моем случае CommandManager не может предложить запрос, где он будет иметь какое-то значение. Теперь я должен обойти это и заставить его запросить. Кто-нибудь знает, как это сделать?
Другое Редактирование: Я уже очень много перепробовал (изменил логику команд, удалил шаблон управления и стиль) и все еще застрял на этом. Однако я не могу воспроизвести проблему в изолированном сценарии с песочницей. Я действительно думаю, что страдаю от ошибки здесь, поскольку поведение Баттона несовместимо с его внешним видом, даже если Стиль сводится к следующему:
<Style TargetType="{x:Type Button}" x:Key="CertificateActionButton">
<Setter Property="Background" Value="{DynamicResource CertificateActionButtonBackground}"/>
<Setter Property="BorderThickness" Value="0"/>
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Background" Value="LightGray"/>
</Trigger>
</Style.Triggers>
</Style>
Когда я расфокусирую, а затем снова фокусирую окно, Coherence восстанавливается - кнопка выглядит так же неактивно, как и она.
Обновление: Поскольку я не смог воспроизвести эту проблему, я закрыл этот вопрос.
Единственный ответ, который он получил, был хорошим, но после того, как он столько раз редактировал вопрос, вопросы больше не кажутся связанными.