如何在WPF中将ItemsSource的索引作为CommandParameter传递

时间:2014-12-17 15:13:35

标签: wpf indexing itemssource commandparameter

在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方法。

谢谢!

1 个答案:

答案 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);
}