WPF Button не реагирует ни на какие события - PullRequest
0 голосов
/ 27 августа 2011

У меня есть простое окно 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>

Ответы [ 3 ]

1 голос
/ 27 августа 2011

Вам необходимо указать свои 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;
}

Надеюсь, это поможет.

0 голосов
/ 27 августа 2011

Может возникнуть проблема с привязкой к команде Close. На что обратить внимание (и, возможно, показать нам):

  • что DataContext представления установлен правильно
  • как реализована команда, возвращаемая свойством Close в viewmodel ...
0 голосов
/ 27 августа 2011

Все зависит от того, что находится в вашем Styles.xaml. Попробуйте прокомментировать это и посмотрите, сработает ли это тогда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...