창을 알리는 명령을 시작할 수 있습니까? 또한 , 나는 당신의보기에 뒤에 코드를 방지하기 위해 (의미에서 Caliburn, ONXY, MVVM 툴킷 등, 프레임 워크)wpf에서 창을로드 할 때 명령을 실행하는 방법
답변
어떤 MVVM 프레임 워크를 사용하지 않는 Interactivity 라이브러리 (Microsoft에서 무료로 다운로드 할 수있는 System.Windows.Interactivity dll - Expression Blend와 함께 제공됨)를 사용하십시오.
그런 다음 명령을 실행하는 동작을 만들 수 있습니다. 이렇게하면 트리거는 명령을 호출하는 동작을 호출합니다.
<ia:Interaction.Triggers>
<ia:EventTrigger EventName="Loaded">
<custombehaviors:CommandAction Command="{Binding ShowMessage}" Parameter="I am loaded"/>
</ia:EventTrigger>
</ia:Interaction.Triggers>
의 commandAction은 (또한 System.Windows.Interactivity 사용)처럼 보일 수 있습니다
public class CommandAction : TriggerAction<UIElement>
{
public static DependencyProperty CommandProperty = DependencyProperty.Register("Command", typeof(ICommand), typeof(CommandAction), null);
public ICommand Command
{
get
{
return (ICommand)GetValue(CommandProperty);
}
set
{
SetValue(CommandProperty, value);
}
}
public static DependencyProperty ParameterProperty = DependencyProperty.Register("Parameter", typeof(object), typeof(CommandAction), null);
public object Parameter
{
get
{
return GetValue(ParameterProperty);
}
set
{
SetValue(ParameterProperty, value);
}
}
protected override void Invoke(object parameter)
{
Command.Execute(Parameter);
}
}
이 코드가 Silverlight 용임을 깨달았습니다. WPF에서 동일한 트리거/비헤이비어를 찾을 수 있다면 같은 원리가 작동해야한다고 생각합니다. – programatique
CommandAction 대신 [InvokeCommandAction] (http://msdn.microsoft.com/en-us/library/system.windows.interactivity.invokecommandaction (Expression.40) .aspx 지금이 기존 작업이있는 것 같습니다.) – Patrick
private void Window_Loaded(object sender, RoutedEventArgs e)
{
ApplicationCommands.New.Execute(null, targetElement);
// or this.CommandBindings[0].Command.Execute(null);
}
및 XAML
Loaded="Window_Loaded"
MVVM을 사용하고 있습니다. 언제, 창이로드됩니다. 그것은 내 ViewModel 클래스에서들을 수 있도록 명령을 실행해야합니다. –
MVVM은 종교가 아닙니다. CodeBehind에 코드 줄을 추가하면 세계는 계속 회전합니다. –
정말이야! 그것이 계속 회전 할 것이라 확신합니까? :) – GONeale
행동을 사용하는보다 일반적인 방법은 AttachedCommandBehavior V2 aka ACB에서 제안하고 심지어 여러 이벤트에-명령 바인딩을 지원,
<Window x:Class="Example.YourWindow"
xmlns:local="clr-namespace:AttachedCommandBehavior;assembly=AttachedCommandBehavior"
local:CommandBehavior.Event="Loaded"
local:CommandBehavior.Command="{Binding DoSomethingWhenWindowIsLoaded}"
local:CommandBehavior.CommandParameter="Some information"
/>
- 1. vim에서 마지막으로 편집 할 때 명령을 실행하는 방법 (들여 쓰기)
- 2. 코드에서 drush 명령을 실행하는 방법
- 3. Java에서 unix 명령을 실행하는 방법
- 4. 복잡한 배치 명령을 즉시 실행하는 방법
- 5. Windows의 cygwin에서 shutdown 명령을 실행하는 방법
- 6. R 스크립트에서 system() 명령을 실행하는 방법
- 7. 원격 저장소에서 Git 명령을 실행하는 방법
- 8. Python에서 컨텍스트 인식 명령을 실행하는 방법?
- 9. ActionLink를 클릭 할 때 Jquery를 실행하는 방법
- 10. 명령을 실행하는 vb.net 문제
- 11. PHP에서 명령을 실행하는 보안
- 12. PHP에서 특정 사용자로 외부 명령을 실행하는 방법
- 13. 코드에서 명령 줄 명령을 실행하는 방법
- 14. 웹 페이지에서 Linux 컴퓨터의 명령을 실행하는 방법?
- 15. android : 코드 내에서 셸 명령을 실행하는 방법
- 16. 보이지 않는 단추를 명령을 실행하는 방법
- 17. vim 스크립트 : vim 함수에서 명령을 실행하는 방법
- 18. powerbuilder의 데이터 윈도우가 삽입 명령을 실행하는 방법
- 19. asp.net 응용 프로그램에서 IISWeb.vbs 명령을 실행하는 방법
- 20. PHP에서 셸 명령을 동 기적으로 실행하는 방법
- 21. Python 스크립트를 종료 할 때 정리를 실행하는 방법
- 22. WPF에서 템플릿을 사용할 때 버튼에 명령을 지정하는 방법은 무엇입니까?
- 23. xfce 세션이 끝날 때 스크립트를 실행하는 방법
- 24. WPF에서 winform을 실행하는 방법은 무엇입니까?
- 25. android에서 USSD 명령을 실행하는 방법은 무엇입니까?
- 26. C# 응용 프로그램에서 텍스트 상자 내에서 VBScript 명령을 실행하는 방법?
- 27. 'rails server'명령을 실행할 때 사용자 정의 명령을 실행하는 방법은 무엇입니까?
- 28. 다른 창에서 응답을받은 후 창을로드 중
- 29. sudoers를 사용하여 다른 사용자로 수은 명령을 실행하는 방법
- 30. WPF에서 ListBox에 바인딩 할 때 이상한 동작
거의 모든 이벤트가 발생하지 수 : 여기
사용의 매우 기본적인 예이다 ViewModel의 명령. 사실을 받아들이고 CodeBehind에 1 줄의 코드를 작성하거나 여러 복잡한 코드 줄이 동일하게 수행하는 모호한 패턴을 구현할 수 있습니다. #dontbeapurist –@EduardoMolteni에 동의하지 않습니다. 이벤트가 데이터 작업과 관련된 경우에는 코드 숨김에서 VM을 사용해야합니다. 이는 WPF의 비헤이비어를 사용하면 쉽게 피할 수 있습니다. – JoanComasFdz