2012-10-22 3 views
3

XamDataGrid를 사용하여 데이터를 표시하고 있습니다. 이제 각 열에 다른 명령을 추가하려고합니다.MVVM을 중단하지 않고 xamdatagrid cellactivated 이벤트에 명령을 추가하는 방법

전체 격자에 대해 CellActivated 이벤트를 사용하면 ViewModel에서 View에 대해 알고 ActiveCell에서 반환 한 객체에서 Column을 평가하는 방법 때문에 ActiveCell에 바인딩 할 수 없습니다.

XamDataGrid에게 어떤 명령을 호출해야하는지 알려주는 방법을 찾고 있습니다. 내가 명령을 내 ViewModel에 나있는 DataItem의 속성 될 경우 신경 정말 해달라고

<igDP:Field Name="Dev"     > 
    <igDP:Field.Settings> 
     <igDP:FieldSettings CellValuePresenterStyle="{StaticResource DevStyle}" ActivateCommand="{Binding DevCommand}/> 
    </igDP:Field.Settings> 
</igDP:Field> 

:

나는 이런 일을 상상한다.

어떻게 구현하나요?

+0

안녕하세요, 아직 해결책을 찾고 있습니다. 누구든지 도와 줄 수 있습니까? – mtxviper

답변

1

Attached BehaviorMVVM이 손에 손을갑니다 감사합니다.

첨부 된 동작을 통해 이벤트를 처리하고 이벤트가 처리 될 때 실행될 Viewmodel.ICommand을 제공하십시오. 그런 다음 처리 된 이벤트의 이벤트 인수를 명령 매개 변수 인 ViewModel.ICommand으로 보낼 수 있습니다.

귀하의 연결된 속성

public static class MyBehaviors { 

    public static readonly DependencyProperty CellActivatedCommandProperty 
     = DependencyProperty.RegisterAttached(
      "CellActivatedCommand", 
      typeof(ICommand), 
      typeof(MyBehaviors), 
      new PropertyMetadata(null, OnCellActivatedCommandChanged)); 

    public static ICommand CellActivatedCommand(DependencyObject o) 
    { 
     return (ICommand)o.GetValue(CellActivatedCommandProperty); 
    } 

    public static void SetCellActivatedCommand(
      DependencyObject o, ICommand value) 
    { 
     o.SetValue(CellActivatedCommandProperty, value); 
    } 

    private static void OnCellActivatedCommandChanged(
      DependencyObject d, 
      DependencyPropertyChangedEventArgs e) 
    { 
     var xamDataGrid = d as XamDataGrid; 
     var command = e.NewValue as ICommand; 
     if (xamDataGrid != null && command != null) 
     { 
      xamDataGrid.CellActivated += 
       (o, args) => 
       { 
        command.Execute(args); 
       }; 
     } 
    } 
} 

귀하의 XAML :

<infragistics:XamDataGrid ... 
     local:MyBehaviors.CellActivatedCommand="{Binding MyViewModelCommand}" /> 

그것이 도움이되기를 바랍니다.

+0

이 CellActivatedCommand는 원하는 하나의 열에 만 바인딩됩니까? CellActivatedCommand를 설정할 위치를 지정하지 않았습니다. – mtxviper

+0

나는 (WPF-it)에 의해 주어진 해결책을 따랐다. 그것은 작동합니다. –