MVVM Light 프레임 워크를 사용하여 SL4 응용 프로그램을 작성하고 있습니다. 내 간단한 응용 프로그램은 주로 여러 개의 UserControls로 나뉘어져있는 단일 기본보기 (shellView)로 구성됩니다. 그것들은 단지 UI의 편리한 분리이므로 그들 자신의 ViewModel이 없습니다.Galasoft RelayCommand가 실행되지 않음
ShellView에는 여러 KeypadButtons (사용자 정의 usercontrols)가 포함 된 키패드 (사용자 정의 usercontrol)가 있습니다.
DataContext가 올바르게 설정되어 있고 계층 구조의 모든 usercontrols에서 사용되는 것으로 확인되었습니다. (ShellView의 Datacontext는 ShellViewModel이고 Keypad의 DataContext는 ShellViewModel입니다.
ShellViewModel에는 "ProcessKey"라는 ICommand (RelayCommand)가 있습니다. KeypadButton은 기본적으로 버튼을 포함하는 그리드입니다
<controls:KeypadButton x:Name="testBtn" Text="Hello">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding PressStandardKeyCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</controls:KeypadButton>
: 키패드 제어에서
는, 내가 좋아하는 뭔가가있다. MouseLeftButtonUp 이벤트가 잡히고 사용자 지정 "Click"이벤트가 발생합니다. 내가 뭐하는 거지 내가 당신에게 쉽게 설명하는 몇 가지 코드를 보여 드리죠 : 나는 innerButton_Click의 몸에 중단 점을 설정 한 경우 이제public partial class KeypadButton : UserControl
{
public delegate void KeypadButtonClickHandler(object sender, RoutedEventArgs e);
public event KeypadButtonClickHandler Click;
public KeypadButton()
{
// Required to initialize variables
InitializeComponent();
}
private void innerButton_Click(object sender, MouseButtonEventArgs e)
{
if (Click != null)
Click(sender, new KeypadButtonEventArgs());
}
}
public class KeypadButtonEventArgs : RoutedEventArgs
{
public string test { get; set; }
}
, 나는 클릭이 제대로 잡혀가 RelayCommand에 포인트를 포함하고 있습니다 볼 수 있습니다. 그러나 아무 것도 발생하지 않습니다 : "클릭 (발신자, 새 KeypadButtonEventArgs());" 실행되지만 아무것도 더.
왜 이렇게 행동합니까? RelayCommand에 정의 된 대상 함수를 실행해야합니까? 어쩌면 범위와 관련된 문제일까요?
미리 감사드립니다. 건배, Gianluca.
내 게시물에서 말했듯이 SL4를 사용하고 있습니다. 내가 아는 한 여기에는 EventManager가 없습니다. 내가 잘못? –
사용자 지정 이벤트 처리기를 RoutedEventHandler로 선언하려고 시도했지만 여전히 동일한 문제가 있습니다. Click 이벤트에 EventTriggerBase 인스턴스가 있지만 실제로 호출해야하는 경우 아무 것도 발생하지 않습니다. 어떤 도움이라도 정말 감사 할 것입니다! 모두 감사합니다! –
죄송합니다. SL을 사용하고 있다는 것을 인식하지 못했습니다 (다음 번에 더 잘 읽을 필요가 있음). 이 기사 (http://www.silverlightshow.net/items/Routed-Events-in-Silverlight.aspx)에 따르면 맞춤 라우트 된 이벤트는 SL에서 지원되지 않습니다. –