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,我不想寫(到很多)代碼。
你想建立一個文件/文件夾瀏覽器?如果是這樣,你應該看codeplex –
上的Coding4Fun [FileExplorer](http://coding4fun.codeplex.com/SourceControl/latest#Experimental/FileExplorer/FileExplorerExperimental/FileExplorerExperimental/Control/FileExplorer.xaml.cs)哦,這看起來很有前途。我會在星期一看看它。非常感謝你。 –