Tring do wstawienia hiperłącza w obrębie DataGrid
i znajdowania metody w celu implementacji zachowania RequestNavigate
przy użyciu wzorca MVVM.Szablon komórki z wykorzystaniem hiperłącza w sygnaturze MVVM
Do tej pory próbowałem wielu rozwiązań, ale żaden z nich nie działa. Proszę, mógłbyś mi pomóc?
To jest mój kod XAML:
<dgWPFCtrl:ExtDataGridTemplateColumn Header="Link to XXX" Width="*">
<dgWPFCtrl:ExtDataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock >
<Hyperlink NavigateUri="{Binding Path=ID_HTTP_LINK}"
>
<TextBlock Text="{Binding Path=ID_HTTP_LINK}"/>
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestNavigate">
<WPFCtrl:EventToCommand
PassEventArgsToCommand="True"
Command="{Binding Path=OpenLinkCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Hyperlink>
</TextBlock>
</DataTemplate>
</dgWPFCtrl:ExtDataGridTemplateColumn.CellTemplate>
</dgWPFCtrl:ExtDataGridTemplateColumn>
i po względną ICommand
rozwój:
//Command for open link
RelayCommand _openLinkCommand;
public ICommand OpenLinkCommand
{
get
{
if (_openLinkCommand == null)
_openLinkCommand = new RelayCommand(param =>
{
//Command Body ...
});
return _openLinkCommand;
}
}
Jeżeli się mylę? Nieoczekiwanie, ICommand
nigdy nie jest wywoływana!
Próbowałem użyć także innego rodzaju zdarzenia (np. MouseEnter
), ale nic się nie zmieniło!
Dzięki z góry za składki,
Dęby
Czy OpenLinkCommand usytuowany w obiekcie są reprezentowane przez DataRow, czy polecenie w swoim ViewModelu? –
Właściwie jest to w moim ViewModel ... – Deby