Sto tentando di inserire un collegamento ipertestuale all'interno di uno DataGrid
e di trovare un metodo per implementare il comportamento RequestNavigate
utilizzando il modello MVVM.Modello di cella con utilizzo del collegamento ipertestuale nel pattern MVVM
Ho provato un sacco di soluzioni fino ad ora, ma nessuno di loro funziona. Potresti aiutarmi per favore?
Questo è il mio codice 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>
e seguendo la relativa ICommand
sviluppo:
//Command for open link
RelayCommand _openLinkCommand;
public ICommand OpenLinkCommand
{
get
{
if (_openLinkCommand == null)
_openLinkCommand = new RelayCommand(param =>
{
//Command Body ...
});
return _openLinkCommand;
}
}
Dove sbaglio? Inaspettatamente, lo ICommand
non viene mai chiamato!
Ho provato a utilizzare anche altri tipi di eventi (ad esempio MouseEnter
), ma non è cambiato nulla!
Grazie in anticipo per i vostri contributi,
Deby
È l'OpenLinkCommand situato nel l'oggetto rappresentato dal DataRow, o è il comando nel tuo ViewModel? –
In realtà è nel mio ViewModel ... – Deby