在ListBox.ItemTemplate DataTemplate内部调用按钮命令,并在不选择ListBox项的情况下传递参数,可以通过以下步骤实现:
<ListBox ItemsSource="{Binding Items}">
<ListBox.ItemTemplate>
<DataTemplate>
<Button Content="按钮" Command="{Binding DataContext.MyCommand, RelativeSource={RelativeSource AncestorType={x:Type ListBox}}}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这里假设ViewModel中有一个名为MyCommand的命令属性。
<Button Content="按钮" Command="{Binding DataContext.MyCommand, RelativeSource={RelativeSource AncestorType={x:Type ListBox}}}" CommandParameter="{Binding}"/>
这里将ListBox的当前项作为参数传递给命令。
public class MyViewModel
{
public ICommand MyCommand { get; }
public MyViewModel()
{
MyCommand = new RelayCommand<object>(ExecuteMyCommand);
}
private void ExecuteMyCommand(object parameter)
{
// 处理按钮点击事件,可以通过parameter获取传递的参数
}
}
这里使用了RelayCommand类来实现命令,可以根据需要选择其他实现了ICommand接口的类。
通过以上步骤,就可以在ListBox.ItemTemplate DataTemplate内部调用按钮命令,并在不选择ListBox项的情况下传递参数。
领取专属 10元无门槛券
手把手带您无忧上云