2011-11-24 52 views
0

我用我的應用程序的MVVM光工具包,並試圖瞭解傳遞命令的參數。 我有以下XAML代碼片段:RelayCommand與

<s:ScatterView x:Name="swPicture" ItemsSource="{Binding Pictures}" ItemTemplate="{StaticResource Scatter_Thumbnail}"/> 
    <Button Content="Info" Width="40" Height="40" 
         Command="{Binding GetInfoCommand}" 
          Grid.Row="0" HorizontalAlignment="Left"/> 

元swPicture包含的項目源,從收集的圖片來。由於只有在時間的測試是我只是有1個圖像。

我怎麼能作爲參數傳遞給命令,從圖片這是我swPicture元單第一張照片?

暫時我能不帶參數觸發單個命令與模型下面的命令處理程序波紋管所:

GetInfoCommand = new RelayCommand<Picture>(
      action=> 
       { 
        GetMetaData(); 
       }, 
       g=>true); //Execute method 

的想法是,我需要從收集傳遞的第一張照片如爲了將它傳遞給的getMetaData參數到我的命令,它會接受這個參數

我如何更新我的XAML代碼和指令,以使工作?

回答

0

在您的場景中,根本不需要參數,因爲您的視圖模型同時具有圖片集合和GetInfoCommand - GetMetaData方法可以訪問集合,並且您可以從那裏訪問第一個元素。

如果你的問題是如何傳遞參數 - 你可以將你的按鈕的CommandParameter屬性的值設置爲某個值,或者將它綁定到任何你想要的,當你按下按鈕時 - Execute和CanExecute方法將會作爲參數傳遞了這個值。

0

CommandParameter做到這一點

<s:ScatterView x:Name="swPicture" ItemsSource="{Binding Pictures}" ItemTemplate="{StaticResource Scatter_Thumbnail}"/> 
    <Button Content="Info" Width="40" Height="40" 
         Command="{Binding GetInfoCommand}" CommandParameter="{Binding Pictures[0]}" 
          Grid.Row="0" HorizontalAlignment="Left"/>