2013-08-16 37 views
2

有关LongListMultiSelector(Windows Phone 8工具包)的另一个问题。 我想在LongListMultiSelector中的单个项目上点击时启动一个命令。WP8:LongListMultiSelector触发项触发器MVVM

XAML

<local:LongListMultiSelector 
        x:Name="FileList" 
        ItemsSource ="{Binding CurrentFileList}" 
        EnforceIsSelectionEnabled="{Binding IsInSelectionMode}" 
        toolkit:TiltEffect.IsTiltEnabled="True" 
        IsSelectionEnabled="True" 
        ItemContainerStyle="{StaticResource FileBrowserLongListMultiSelectorStyle}" 
        SelectedFiles="{Binding SelectedFiles}"> 
        <local:LongListMultiSelector.ItemTemplate> 
         <DataTemplate> 
          <StackPanel Orientation="Horizontal" Margin="0,0,0,20"> 
           <Rectangle Width="80" Height="80" Fill="{StaticResource BoxCryptorGreenBrush}"/> 
           <StackPanel Margin="10,0"> 
            <TextBlock Text="{Binding Name}" Style="{StaticResource PhoneTextLargeStyle}"/> 
            <TextBlock Text="{Binding Size}" Style="{StaticResource PhoneTextSmallStyle}"/> 
           </StackPanel>     
           <i:Interaction.Triggers> 
            <i:EventTrigger EventName="Tap"> 
             <i:InvokeCommandAction Command="{Binding TapOnFileCommand}" CommandParameter="{Binding}"/> 
            </i:EventTrigger> 
           </i:Interaction.Triggers>  
          </StackPanel> 
         </DataTemplate> 
        </local:LongListMultiSelector.ItemTemplate> 
       </local:LongListMultiSelector> 

,并在我的ViewModel:

FileBrowserViewModel

// command 
public RelayCommand<File> TapOnFileCommand { get; private set; } 

// constructor 
public FileBrowserViewModel() 
{ 
    TapOnFileCommand = new RelayCommand<File>(
      TapOnFile, 
      (f) => true); 
} 

// method 
private void TapOnFile(File file) 
{ 
    if (file.IsFolder) 
    { 
     _currentFileList = file.Children; 
    } 
} 

现在永远不会执行的TapOnFileCommand。 IntelliSense甚至可以从XAML文件中找到命令。 我错过了什么? 我正在使用Mvvm Light,我不想写(到很多)代码。

+0

你想建立一个文件/文件夹浏览器?如果是这样,你应该看codeplex –

+0

上的Coding4Fun [FileExplorer](http://coding4fun.codeplex.com/SourceControl/latest#Experimental/FileExplorer/FileExplorerExperimental/FileExplorerExperimental/Control/FileExplorer.xaml.cs)哦,这看起来很有前途。我会在星期一看看它。非常感谢你。 –

回答

0

这里是我的解决方案:

我不得不搬到了TapOnFileCommand在FileViewModel(列表中的元素)。 里面的DataContext是单个项目本身。 输出提供了相关提示。