2013-03-04 15 views
5

DataGridにハイパーリンクを挿入し、MVVMパターンを使用してRequestNavigateの動作を実装する方法を見つけることがあります。MVVMパターンでハイパーリンクを使用するセルテンプレート

私は今まで多くのソリューションを試しましたが、いずれも機能していません。私を手伝ってくれますか?

これは私の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> 

と相対ICommand開発次:私が間違っている

//Command for open link 
RelayCommand _openLinkCommand; 
public ICommand OpenLinkCommand 
{ 
    get 
    { 
     if (_openLinkCommand == null) 
      _openLinkCommand = new RelayCommand(param => 
      { 
       //Command Body ... 
      }); 
     return _openLinkCommand; 
    } 
} 

を?予期せず、ICommandが呼び出されることはありません。

他の種類のイベント(MouseEnterなど)も使用しようとしましたが、何も変更されていません。あなたの貢献のために事前に

おかげで、

デビ

+0

はのDataRowで表現されているオブジェクトに位置OpenLinkCommandです、またはコマンドでありますあなたのViewModelで? –

+0

実際には私のViewModelにあります... – Deby

答えて

10

は、ハイパーリンクのDataContextのはDataGridRowによって表されるオブジェクトではなく、あなたのViewModelのものです。したがって、そのViewModel(RelativeSource AncestorTypeまたはElementName)にアクセスするには、バインディングメソッドを使用する必要があります。

のElementName(あなたのデータグリッドの名前は想定し 'myDataGrid')

Command="{Binding ElementName=myDataGrid, Path=DataContext.OpenLinkCommand}" 

RelativeSource

Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}, Path=DataContext.OpenLinkCommand}" 
+0

問題が解決しました!本当にありがとうZF !! :D – Deby

+0

おい、私はなぜ私のハイパーリンクがうまくいかないのかWebを掘り下げている。私は1つのスクロールダウンのような同じ方法を適用しても、それを見ることができませんでした。 – Javidan

関連する問題