我有一个Windows Phone 8.1 silverlight应用程序,我正在使用MVVMLight工具包。 我有三个ViewModel:Main,PivotItem和Item。 在MainViewModel中,我有一个PivotItem的ObservableCollection,在PivotItemViewModel中有一个ItemViewModel的ObservableCollection,最后在ItemViewModel中我有一个项目的属性。
这是MainPage.xaml:
<phone:Pivot Title="{Binding Title}" ItemsSource="{Binding PivotItemViewModels}">
<phone:Pivot.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Header}" />
</DataTemplate>
</phone:Pivot.HeaderTemplate>
<phone:Pivot.ItemTemplate>
<DataTemplate>
<phone:LongListSelector x:Name="LongListSelector" ItemsSource="{Binding ItemViewModels}">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Tipus}" />
<TextBlock Text="{Binding Megjegyzes}" />
</StackPanel>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Tap">
<commands:EventToCommand Command="{Binding SelectedCommand,
Mode=OneWay}"
CommandParameter="{Binding Path=SelectedItem,
ElementName=LongListSelector}"
PassEventArgsToCommand="False" />
</i:EventTrigger>
</i:Interaction.Triggers>
</phone:LongListSelector>
</DataTemplate>
</phone:Pivot.ItemTemplate>
</phone:Pivot>
对于LongListSelector Tap事件,我想将所选项目传递给我的EditView。
这是我在PivotItemViewModel中的SelectedCommand:
public RelayCommand<ItemViewModel> SelectedCommand { get; set; }
private void Edit(ItemViewModel item)
{
ApplicationController.Default.NavigateTo(ViewType.Edit);
}
public PivotItemViewModel()
{
SelectedCommand = new RelayCommand<ItemViewModel>(Edit);
}
我的第一个问题是我应该使用哪个ViewModel,PivotItemViemModel或ItemViewModel用于EditView的datacontext?如何将所选项目传递给视图?