Вопрос:
У меня есть простое окно WPF, довольно простое, TextBlock окно и Button. Однако кнопка ничего не реагирует. Нет, если я надвигаю указатель мыши на него, и если я его нажму.
Линия от кнопки:
<Button Margin=»3″ Command=»Close» Content=»Ok» Width=»50″/>
Код полного окна:
<Window x:Class=»Launcher.XAML.MessageWindow» xmlns=»http://schemas.microsoft.com/winfx/2006/xaml/presentation» xmlns:x=»http://schemas.microsoft.com/winfx/2006/xaml» x:Name=»self» Title=»{Binding ElementName=self, Path=Caption}» Height=»194″ Width=»477″> <Window.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source=»Styles.xaml» /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Window.Resources> <Grid> <Grid.RowDefinitions> <RowDefinition Height=»*» /> <RowDefinition Height=»Auto» /> </Grid.RowDefinitions> <TextBlock VerticalAlignment=»Stretch» HorizontalAlignment=»Stretch» Text=»{Binding ElementName=self, Path=Message}» Margin=»10″ TextWrapping=»Wrap» /> <StackPanel Grid.Row=»1″ HorizontalAlignment=»Right» Orientation=»Horizontal»> <Button Margin=»3″ Command=»Close» Content=»Ok» Width=»50″/> </StackPanel> </Grid> Лучший ответ:
Вам нужно указать свои CommandBindings и Button следующим образом:
<Window.CommandBindings> <CommandBinding Command=»ApplicationCommands.Close» Executed=»CloseCommandHandler» CanExecute=»CanExecuteHandler» /> </Window.CommandBindings> …. <Button Margin=»3″ Command=»ApplicationCommands.Close» Content=»Ok» Width=»50″/>
Затем настройте обработчики Executed и CanExecute:
private void CloseCommandHandler(object sender, ExecutedRoutedEventArgs e) { //Do something } private void CanExecuteHandler(object sender, CanExecuteRoutedEventArgs e) { //Determine whether handler can execute e.CanExecute = true; }
Надеюсь это поможет.
Ответ №1
Все зависит от того, что в вашем Styles.xaml. Попробуйте прокомментировать это и посмотрите, работает ли это.
Ответ №2
Там migth будет проблемой с привязкой к команде Close. Что нужно посмотреть (и, возможно, показать нам):
- что DataContext представления установлен правильно
- как реализована команда, возвращаемая свойством Close в viewmodel…