Я трачу много времени, чтобы понять, почему он не работает, он просто ДОЛЖЕН работать, но не работает ...
Давайте представим, что у меня ItemsControl, связанный с ObservableCollection. Внутри ItemsControl.ItemTemplate есть StackPanel с кнопками, текстовые блоки и т. Д. c. Я хочу привязать событие ToolTip Opened, прикрепленное к StackPanel, к моей Команде, и мне также нужен экземпляр модели.
<StackPanel.ToolTip>
<ToolTip>
<TextBlock Text="Example text"></TextBlock>
<i:Interaction.Triggers>
<i:EventTrigger EventName="Opened">
<i:InvokeCommandAction Command="{Binding Path=DataContext.TooltipOpenCommand, ElementName=MapsControl}" CommandParameter="{Binding}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ToolTip>
</StackPanel.ToolTip>
Мой C# код:
public ICommand TooltipOpenCommand => new RelayCommand(ToolTipOpen);
public void ToolTipOpen(object obj)
{
MessageBox.Show("Test message");
}
(RelayCommand
это просто пример команды по умолчанию из inte rnet с execute и CanExecute
)
Таким образом, когда я наведите курсор мыши на StackPanel
, появляется всплывающая подсказка с «Примером текста», но команда не выполняется, я не могу понять почему, что я делаю не так?
Кстати, чтобы доказать, что он ДОЛЖЕН работать, проверьте этот код (он прикреплен только к той же StackPanel в примере выше, но не к всплывающей подсказке) , И ЭТОТ КОДЕКС РАБОТАЕТ !!! Но код выше не ...
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseEnter">
<i:InvokeCommandAction Command="{Binding Path=DataContext.TooltipOpenCommand, ElementName=MapsControl}"
CommandParameter="{Binding}"/>
</i:EventTrigger>
</i:Interaction.Triggers>