Моя цель: щелкните правой кнопкой мыши определенный элемент в моем ListView, появится контекстное меню, выберите команду, после чего я запустил функцию, основанную на том, контекстное меню какого элемента было выбрано.
ItemsSource моего ListView ограничен CollectionViewSource, источником которого является ObservableCollection "Items". (ListView, привязки -> CollectionViewSource, источник -> ObservableCollection класса "Элемент")
Что я пытался сделать, так это добавить общий ContextMenu ко всем «Элементам» в списке, и когда элемент контекстного меню выбирается для элемента в ListView, запускается команда. Мне удалось запустить команду в целом, но я не смог получить какую-либо информацию/параметры о конкретном элементе, контекстное меню которого было выбрано.
В этом примере класс «Элемент» имеет строку с именем хост, и я хочу передать строку хоста в RefundRequestCommand, но мне не удалось передать какие-либо параметры CommandParameters.
Я читал кое-что о создании шаблона данных и его использовании, но безуспешно. Может ли кто-нибудь направить меня / помочь мне?
Вот код для справки:
Посмотреть список:
<ListView x:Name="ordersList" Margin="0,10,10,0" BorderThickness="2" Grid.Column="2" Grid.Row="0" Grid.RowSpan="2" HorizontalAlignment="Stretch" ItemsSource="{Binding Source={StaticResource cvsOrders}}" SelectionChanged="ordersList_SelectionChanged" SelectedIndex="0" SelectionMode="Extended">
<ListView.Resources>
<local:RefundRequestCommand x:Key="refund"></local:RefundRequestCommand>
</ListView.Resources>
<ListView.ContextMenu>
<ContextMenu>
<MenuItem Header="test" Command="{StaticResource refund}" CommandParameter="{Binding host}"></MenuItem>
</ContextMenu>
</ListView.ContextMenu>
<ListView.View>
<GridView>
<GridViewColumn Width="140">
<GridViewColumnHeader Name="OrderNumber" Click="sortClick" Tag="orderNumber" Content="Order Number" />
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding orderNumber}" TextAlignment="Center"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
//On and On.....
Команда:
class RefundRequestCommand : ICommand
{
TreeViewFilter treeViewFilter;
public void Execute(object parameter)
{
string host = (string)parameter;
Console.WriteLine(host); //FOR TESTING
}
public bool CanExecute(object parameter)
{
return true;
}
public event EventHandler CanExecuteChanged;
}