У меня есть всплывающее окно в пользовательском элементе управления, который всплывает с событием mouseenter.
Всплывающее окно и кнопка отображаются нормально.
Когда я нажимаю на кнопку, элемент управления зависает и не запускает команду. Чтобы разморозить, я должен свернуть окно.
Всплывающий код выглядит следующим образом:
<Popup Name="Popup_PrevButton"
PlacementTarget="{Binding ElementName=PART_Button}"
Placement="Left"
StaysOpen="False"
AllowsTransparency="True"
PopupAnimation="Fade"
Focusable="True">
<Grid>
<Button
Name="Button_PrevButton"
Margin="2,0,2,0"
Width="20"
Height="48"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Foreground="{TemplateBinding Foreground}"
Command="{Binding Path=Button_NextButton}">
</Button>
</Grid>
</Popup>
Если я использую Click = Button_NextButton, я получаю сообщение об ошибке:
Не удалось создать «щелчок» из текста «Button_NextButton».
Обновление
Я обновил свой код и реализовал класс RelayCommand в соответствии с предложением. Я изменил привязку на
Command="{Binding Path=nCommand:CustomCommands.Button_Click}">
Я уверен, что связал команду (изменяя вещи, я ломаю программу, чтобы она не запускалась - например: если я удалю подпрограмму, то получаю ошибку, что подпрограмма не существует), но когда я нажимаю на кнопку, происходит то же самое.
Команда кнопки выглядит следующим образом:
Private Sub ON_Button_Click(ByVal sender As Object, ByVal e As ExecutedRoutedEventArgs)
'Do something here
End Sub
Код для nCommand:
Public Shared Button_PrevButton_Click As New RoutedCommand ("Button_PrevButton_Click", GetType (MainWindow))
Связывание в MainWindow:
Так что в основном я знаю, что компилятор видит вещи, но когда я нажимаю, он не передает его в подпрограмму. есть еще мысли?