在WPF中: 如何将ItemsSource循环的索引作为CommandParameter传递?
<ItemsControl ItemsSource="{Binding PageList}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button
Content="{Binding Name}"
Command="{Binding DataContext.ChangePageCommand, ElementName=Window}"
CommandParameter="INDEX OF ACTUAL ITEM AT ITEMSSOURCE GOES HERE" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
所以,我想要的是将按下的按钮号传递给Command方法。
谢谢!
答案 0 :(得分:0)
简单的方法。
首先,拧紧索引。他们很糟糕。绑定到SelectedItem
<ItemsControl ItemsSource="{Binding PageList}" SelectedItem="{Binding SelectedPage}">
现在,您不必尝试将索引传递给参数,因为所选页面已经在ViewModel中。
// set in the ctor
public ObservableCollection<Page> PageList {get;private set;}
// Omitting INPC stuff in the setter
public Page SelectedPage {get;set;}
// Here's the Execute method of the ICommand
private void ExecuteChangePageCommand(object parameter)
{
// lol screw the parameter
var currentPage = SelectedPage;
UpdateSelectedPageOrDoWhateverLolKthx(currentPage);
}