У меня есть пользовательский контроль WPF, который содержит панель инструментов с 5 кнопками. Команды для кнопок обрабатываются в родительском окне, но команда пятой кнопки обрабатывается самим UC. Кажется, что бы я ни пытался, кнопка всегда отключена. Это мой код:
В пользовательском управлении ...
<UserControl.CommandBindings>
<CommandBinding Command="loc:MyAppCommands.OpenUrl" Executed="OpenUrl" />
</UserControl.CommandBindings>
Кнопка, о которой идет речь ...
<l49ui:ImageButton Command="loc:MyAppCommands.OpenUrl" CommandParameter="{Binding}" Text="{lex:LocText MyApp.Core:Strings:OpenUrl}" ShowText="False" ToolTip="{lex:LocText MyApp.Core:Strings:OpenUrl}" Style="{StaticResource ToolBarButton}"
Image="{Binding Url,Converter={StaticResource UrlNotNullConverter},ConverterParameter=image}" IsEnabled="true" />
Текст данных для пользовательского элемента управления устанавливается на основе выбора списка; поэтому у меня есть WIndow-> UserControl, привязанный к ListBox-> TabControl-> кнопки панели инструментов
Изображение изменяется в зависимости от того, является ли параметр команды (в данном случае Url) пустым, и это работает. Однако кнопка всегда отключена. Единственное, что вызывает его включение, - это переключение на другую вкладку в элементе управления вкладкой pareent, а затем возврат на вкладку с помощью кнопки.
Я пытался вызвать CommandManager.InvalidateRequerySuggested (); когда текст данных изменяется и добавляется обработчик CanAlwaysExecute для команды, но обработчик CanExecute не выполняется, когда я вызываю CommandManager.InvalidateRequerySuggested ();.