2013-12-13 35 views
0

我與這是一個問題所困擾:我有一個這樣的LonglistSelector:點擊手勢事件+ Longlistselector +頁眉挖掘

<phone:LongListSelector Name="ListContacts" 
              ItemsSource="{Binding GroupedPeople}" 
              JumpListStyle="{StaticResource LongListSelectorJumpListStyle}"            
              GroupHeaderTemplate="{StaticResource LongListSelectorGroupHeaderTemmplate}" 
              ItemTemplate="{StaticResource LongListSelectorItemTemplate}" 
              HideEmptyGroups ="True" IsGroupingEnabled ="true" LayoutMode="List"> 
          <i:Interaction.Triggers> 
           <i:EventTrigger EventName="Tap"> 
            <mvvmlight:EventToCommand Command="{Binding ListContactsTapCommand, Mode=OneTime}" CommandParameter="{Binding ElementName=ListContacts, Path=SelectedItem}" /> 

           </i:EventTrigger> 
          </i:Interaction.Triggers> 
         </phone:LongListSelector> 

這是非常相似的PeopleHub在這個環節:http://code.msdn.microsoft.com/wpapps/PeopleHub-Windows-Phone-80-88abe94d

我的問題是點擊事件。當我在信中第一次點擊時,所有的事情都按預期發生。然後,我點擊一個聯繫人以查看更多信息,這一切都很好。

當我在信中再次點擊,因爲點擊事件被觸發兩次發生該問題(我認爲):一個因的SelectedItem不爲null,另一個顯示信的。

在我的ViewModel我有這樣的:

public RelayCommand<Contact> ListContactsTapCommand { get; private set; } 

..... 

this.ListContactsTapCommand = new RelayCommand<Contact>(contact => ShowContactInformation(contact), contact => contact != null); 

private void ShowContactInformation(Contact c) 
     { 

      ServiceLocator.Current.GetInstance<ContactInfoViewModel>().ContactInfo = c; 
      _navigationService.NavigateTo(new Uri(ViewModelLocator.ContactInfoPage, UriKind.Relative)); 

     } 

我想可能是解決的方法是重的SelectedItem或隨後的方式來知道我攻。

誰能舉個手? 在此先感謝。

問候

回答

0

解決我的問題的方式,我不完全同意...它「休息」 MVVM模式有點

這是我做了什麼

查看:

<mvvmlight:EventToCommand Command="{Binding ListContactsTapCommand, Mode=OneTime}" CommandParameter="{Binding ElementName=ListContacts}"/> 

視圖模型:

this.ListContactsTapCommand = new RelayCommand<LongListSelector>(param => ShowContactInformation(param), param => param.SelectedItem != null); 
private void ShowContactInformation(LongListSelector c) 
     { 

      ServiceLocator.Current.GetInstance<ContactInfoViewModel>().ContactInfo = c.SelectedItem as Contact; 
      _navigationService.NavigateTo(new Uri(ViewModelLocator.ContactInfoPage, UriKind.Relative)); 
      c.SelectedItem = null; 

     } 

我不同意這種做法的原因是因爲視圖模型必須知道從視圖......這是不應該的對象,但由於LonglistSelector不允許綁定的SelectedItem,這是我想出瞭解決方案。

如果您有任何的任何其它點...我會很高興知道它提前再次:)

感謝。