그리드 예 : 내 뷰 모델에서EventToCommand를 통해 어떻게 RelayCommand에 LayoutRoot를 보냅니 까? 트리거와
<Grid x:Name="LayoutRoot" DataContext="{Binding ProjectGrid, Source={StaticResource Locator}}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<GalaSoft_MvvmLight_Command:EventToCommand Command="{Binding LoadedCommand, Mode=OneWay}" PassEventArgsToCommand="True"/>
</i:EventTrigger>
</i:Interaction.Triggers>
나는이 같은 LoadedCommand 설정 :
public RelayCommand<RoutedEventArgs> LoadedCommand {get;private set;}
을 그리고 뷰 모델 초기화에 나는이 있습니다
을public ProjectGridViewModel()
{
LoadedCommand = new RelayCommand<RoutedEventArgs>(e =>
{
this.DoLoaded(e);
}
);
}
그런 다음 내 DoLoaded에서 나는이 작업을 수행하기 위해 노력하고있어 :
Grid _projectGrid = null;
public void DoLoaded(RoutedEventArgs e)
{
_projectGrid = e.OriginalSource as Grid;
}
당신은 내가보기에 내 그리드에 = ""내로드를 제거하기 위해 노력하고있어보고, 대신 RelayCommand을 수행 할 수 있습니다 . 원본 소스가 가져 오는 문제는 없습니다.로드 된 이벤트가 이런 방식으로 실행되고 있지만 RoutedEventArgs를 통해 Grid를 가져와야합니다.
CommandParameter = "{Binding ElementName = LayoutRoot}"인 EventCommand에서 Grid를 통과 시키려고했으나 F5를 누르고 프로젝트를 실행할 때 VS2010이 충돌합니다.
아이디어가 있으십니까? 또는 이것을하는 더 좋은 방법? Loaded 이벤트를 C#에서 실행 한 다음 Views 코드 숨김에서 ViewModel을 호출했지만 더 나은 바인딩을 수행하고 싶습니다. Views 코드 숨김에서 ViewMode에 대해 말하면 해킹처럼 느껴진다.
그랬습니다. Thx bud ... lifesaver :) 나는 다른 사람들도 이것을 원할 것이 틀림 없다. 웹 검색 중 아무것도 발견하지 못할 것이다. – user298145