我有一个列表框,旁边显示一个项目和一个删除按钮。如何触发relay命令将参数传递给viewmodel,以便我可以执行删除。
示例代码。
<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 :(得分:0)
您应该为列表中的每个项目使用单独的ViewModel。在里面存储元素的ID。然后将RemoveCommand放在那些ViewModel中,并使用ID在那里执行删除。