3

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 メソッドに渡すことです。

ありがとうございました!

4

1 に答える 1

-1

それを行う簡単な方法。

まずはネジインデックス。彼らは吸う。にバインド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);
}
于 2014-12-17T15:25:34.773 に答える