2011-04-08 30 views
0

我有一個列表框,顯示一個項目和一個旁邊的刪除按鈕。我如何觸發中繼命令傳遞一個參數到viewmodel,所以我可以執行刪除操作。silverlight:如何通過單擊項目旁邊的按鈕來傳遞列表框中項目的值

示例代碼。

<ListBox ItemsSource="{Binding Path=CurrentUserRoles, Mode=TwoWay}" SelectedValuePath="Id" Name="lstRoles" Grid.Row="0" > 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal" VerticalAlignment="Center"> 
        <Button Command="{Binding Path=RemoveFromUserRolesCommand, Mode=TwoWay}" Content="Delete"> 
        </Button> 
        <TextBlock Text=" "></TextBlock> 
        <TextBlock Text="{Binding Path=Name}"></TextBlock> 
       </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
</ListBox> 

視圖模型:

 private RelayCommand _removeFromUserRolesCommand = null; 
     public RelayCommand RemoveFromUserRolesCommand 
     { 
      get 
      { 
       if (_removeFromUserRolesCommand == null) 
       { 

        _removeFromUserRolesCommand = new RelayCommand(
         () => this.OnARemoveFromUserRolesCommand(), 
         () => (this._adminModel != null)); 
       } 
       return _removeFromUserRolesCommand; 
      } 
     } 
     private void OnARemoveFromUserRolesCommand() 
     { 
      try 
      { 
       if (!_adminModel.IsBusy && SelectedAvailableRole != null) 
       { 
        ... 
       } 
      } 
      catch (Exception ex) 
      { 
       ... 
      } 
     } 

但它不工作。我是Silverlight的新手,所以任何人都會遇到這種情況?你能分享嗎?

回答

0

您應該爲列表中的每個項目使用單獨的ViewModel。在裏面存儲元素的ID。然後,將RemoveCommand放入這些ViewModel中,並使用該ID在那裏執行刪除操作。

相關問題