2

LongListMultiSelector (Windows Phone 8 Toolkit) に関する別の質問。LongListMultiSelector の単一項目をタップしたときにコマンドを開始したい。

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 を使用していますが、コード ビハインドを (あまり) 書きたくないのです。

4

1 に答える 1

0

これが私の解決策です:

TapOnFileCommand をFileViewModel (リスト内の要素) に移動する必要がありました。内の DataContext は、単一のアイテムそのものです。出力は関連するヒントを与えました。

于 2013-08-20T10:18:24.443 に答える