WPF 프로젝트에서 MVVM을 사용하고 있습니다. 이제 누군가가 버튼을 누를 때 서브 윈도우를 표시하려고합니다. 이를 고전적으로 표현하기 위해 Show() 메서드를 호출합니다. 내 응용 프로그램을 유지하기 위해 지금 원하는 것은 하위 윈도우의 Show() 함수에 버튼을 바인딩하는 것입니다.컨트롤의 "function"호출
버튼 클릭 (메뉴 클릭 등)이 항상 허용되는 것은 아니기 때문에 명령을 실행할 수 있는지 평가하는 사용자 지정 명령을 작성했습니다. 그러나, 나는 그 컨트롤의 기능을 깨끗한 방법으로 호출하는 방법을 찾지 못했습니다. 이것은 고전적인 스타일 (프론트 엔드의 코드)을 수행하는 요점입니까?
편집 (코드를 포함하는)
XAML :
<MenuItem Foreground="White" Header="File">
<MenuItem Header="Login" Background="#FF444444" Command="{Binding Dialog.ApplicationLoginCommand}" />
<MenuItem Header="Logout" Background="#FF444444" Command="{Binding Dialog.ApplicationLogoutCommand}" />
<MenuItem Header="Exit" Background="#FF444444" Command="{Binding Dialog.ApplicationShutdownCommand}" />
</MenuItem>
C 번호 : 하나의 명령이 다른 프론트 엔드에 고유 한 이후
public class ApplicationDisplayLoginCommand : ICustomCommand {
private MyViewModel _ViewModel = null;
public ApplicationDisplayLoginCommand(MoneyManagementViewModel vm) {
_ViewModel = vm;
}
#region ICustomCommand Members
public event CustomCommandExecutedDelegate CustomCommandExecuted;
#endregion
#region ICommand Members
public bool CanExecute(object parameter) {
return ! _ViewModel.IsLoggedIn;
}
public event EventHandler CanExecuteChanged {
add {
CommandManager.RequerySuggested += value;
}
remove {
CommandManager.RequerySuggested -= value;
}
}
public void Execute(object parameter) {
if (null != CustomCommandExecuted) {
CustomCommandExecuted();
}
_ViewModel.Login();
}
}
ICustomCommand, 그냥 이벤트를 추가하려면 ICommand의 상속 명령이 다르게 동작해야합니다.
에만 속성에, 방법에 바인딩 할 수 없습니다
-sa
사용자 정의 명령을 어떻게 지정 했습니까? 이 작업을 수행 할 수있는 방법이 많이 있으므로 몇 가지 코드를 보여주십시오. – Heinzi
수정 됨. 더 필요한 경우 물어보십시오. – Sascha