2011-04-08 14 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를 사용하여 삭제를 수행합니다.