У меня есть шаблон данных в WPF, который привязан к классу ResultsViewModel и отображает виртуальную машину в формате таблицы. Буква из них составляет ListBoxItems в ListBox. Я хочу, чтобы в каждой отдельной таблице было немного X в верхней правой части границы, где, если вы нажмете на нее, она вызывает функцию, которая удаляет этот элемент из списка.WPF гиперссылка в datatemplate listboxitem
Я попытался использовать гиперссылку и событие OnClick, но тогда у меня должен быть DataTemplate в основном XAML, а не в словаре ресурсов, так как ему нужен топор: метка класса для использования событий, но затем событие запускается в MainViewModel, который не является наихудшей вещью в мире, поскольку наблюдаемый список хранится в MainViewModel и в любом случае его нужно удалить в этом месте, но я не могу понять, как получить ссылку на ResultsViewModel в окне списка элемент, который содержал шаблон данных, которая была нажата
<DataTemplate x:Key="ErroredResultsTemplate" DataType="x:Type vm:ResultsViewModel" >
<Border x:Name="Border" BorderBrush="{StaticResource ResultProcessedBorder}" Background="{StaticResource ResultFill}" BorderThickness="4" CornerRadius="10" Margin="6" Padding="5" Width="110" Height="110">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="20" />
<RowDefinition Height="83" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Foreground="{StaticResource ResultGrayText}" FontWeight="Bold" HorizontalAlignment="Right" VerticalAlignment="Top">
<Hyperlink Click="Close_Results">X</Hyperlink>
</TextBlock>
<TextBlock Width="90" Text="An error occurred calculating results" TextWrapping="Wrap" Foreground="{StaticResource ResultGrayText}" FontWeight="Bold" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Top" TextAlignment="Center" />
</Grid>
</Border>
</DataTemplate>
Вместо Гиперссылки с обработчиком события, почему бы вам не использовать 'Button' с командой, и пусть эта команда постоянно находиться там, где вы хотите (используйте RelativeSource FindAncestor в ListBox, если вы хотите получить доступ к Команде из DataContext ListBox) и установить 'CommandParameter' команды как' {Binding Path = DataContext, RelativeSource = {RelativeSource Self}} ' – Viv