El botón WPF no reacciona a ningún evento

Tengo una ventana WPF simple, bastante simple, una TextBlock y una Button. Sin embargo, el botón no reacciona a nada. No si muevo el mouse sobre él ni si hago clic en él.

Línea desde el botón:

<Button Margin="3" Command="Close" Content="Ok" Width="50"/>

Código de ventana completa:

<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>

preguntado el 27 de agosto de 11 a las 17:08

¿Y cómo esperas que reaccione? -

Presumiblemente con algún tipo de cambio visual cuando se produce un clic / mouse sobre. Al menos, esa es mi suposición. -

3 Respuestas

Debe especificar sus CommandBindings y Button así:

<Window.CommandBindings>
    <CommandBinding Command="ApplicationCommands.Close"
                Executed="CloseCommandHandler"
                CanExecute="CanExecuteHandler"
                />
</Window.CommandBindings>

....

<Button Margin="3" Command="ApplicationCommands.Close" Content="Ok" Width="50"/>

Y luego configure sus controladores Ejecutados y 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;
}

Espero que esto ayude.

Respondido 27 ago 11, 21:08

Sí, era el controlador CanExecute .. Además, era uno de los comandos estándar wpf overs, así que necesitaba escribir el mío. - esqueleto

Puedes acortar ApplicationCommands.Close a Close en XAML. - svick

Todo depende de lo que haya en su Styles.xaml. Intente comentar eso y vea si funciona.

Respondido 27 ago 11, 21:08

Es posible que haya un problema con el enlace al comando Cerrar. Cosas para mirar (y quizás mostrarnos):

  • que el DataContext de la vista está configurado correctamente
  • cómo se implementa el comando devuelto por la propiedad Close en el modelo de vista ...

Respondido 27 ago 11, 21:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.