Tôi đang cố gắng chèn một siêu liên kết trong một DataGrid
và tìm phương pháp để thực hiện hành vi RequestNavigate
bằng mẫu MVVM.Mẫu ô có sử dụng siêu liên kết trong mẫu MVVM
Tôi đã thử nhiều giải pháp cho đến bây giờ, nhưng không có giải pháp nào hoạt động. Bạn có thể vui lòng giúp tôi không?
Đây là mã XAML của tôi:
<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>
và làm theo tấm thân ICommand
phát triển:
//Command for open link
RelayCommand _openLinkCommand;
public ICommand OpenLinkCommand
{
get
{
if (_openLinkCommand == null)
_openLinkCommand = new RelayCommand(param =>
{
//Command Body ...
});
return _openLinkCommand;
}
}
đâu tôi sai? Thật bất ngờ, ICommand
thậm chí không bao giờ được gọi!
Tôi đã cố gắng sử dụng các loại sự kiện khác (chẳng hạn như MouseEnter
), nhưng không có gì thay đổi!
Cảm ơn trước vì những đóng góp của bạn,
Deby
Là OpenLinkCommand nằm trong đối tượng được đại diện bởi các DataRow, hoặc là lệnh trong ViewModel của bạn? –
Thực ra nó ở trong ViewModel của tôi ... – Deby