2013-03-04 8 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)도 사용하려고했지만 아무 것도 변경되지 않았습니다. 여러분의 공헌에 미리

감사합니다,

데비 하이퍼 링크의 DataContext를이 DataGridRow 아니라 당신의 ViewModel으로 표시 객체의 즉

+0

가 된 DataRow에 의해 표현되는 객체에있는 OpenLinkCommand, 또는 명령입니다 귀하의 ViewModel에? –

+0

실제로 내 ViewModel에 있어요 ... – Deby

답변

10

. 따라서 바인딩 메소드를 사용하여 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

젠체하는 사람, 나는 웹을 파고 있는데 왜 내 하이퍼 링크가 작동하지 않습니다. 심지어 1 개의 스크롤 다운과 같은 방법을 적용하여 볼 수 없었습니다. – Javidan