2013-06-07 4 views
0

나는 현재 내 DataGrid이 개체의 컬렉션에 바인딩 된 WPF 응용 프로그램을 쓰고 있어요 변경에 CurrentCellChanged. 사용자가 셀을 변경할 때 트리거되는 이벤트가 필요합니다. 내 컬렉션에 두 개 이상의 행/개체가있을 때이 작동합니다. 내가 4 열에 값을 입력하면세포는

COLUMN 1 | COLUMN 2 | COLUMN 3 | COLUMN 4 
test  | test 1  | test  | 1000 

, 나는 이벤트를 트리거 및 열 4의 값에 입력 한 사용자가 다른 할 것으로 판단 할 수 있도록하려면 다음은

내 시나리오입니다 호출/계산. Microsoft DataGrid 3.5에서는 1 행만 처리 할 때 어려움이 있습니다. 내가 할 수있는 다른 무엇

private void PART_DataGrid_CurrentCellChanged(object sender, EventArgs e) 
     { 
      Microsoft.Windows.Controls.DataGridColumn currentColumn = (sender as Presentation.DataGrid).CurrentColumn; 

      if (currentColumn == null || currentColumn.DisplayIndex != 3 || !m_isEditedFinished) 
       return; 

      if (m_vm.MYCommand.CanExecute(null)) 
      { 
       if (CurrentRow != null) 
       { 
        if (m_isEditedFinished) 
        { 
         m_vm.MYCommand.Execute(new EnterUserCountCommandParameters() 
         { 
          ViewModel = m_vm, 
          Item = CurrentRow 
         }); 

         m_isEditedFinished = false; 
        } 
       } 
      } 
     } 

    private Boolean m_isEditedFinished = false; 

    private void OnCellEditEnding(object sender, Microsoft.Windows.Controls.DataGridCellEditEndingEventArgs e) 
    { 
     CurrentRow = e.Row.Item; 
     m_isEditedFinished = true; 
    } 

어떤 아이디어 : 여기

내가 가진 것을 내 코드? 당신에

+0

왜 그 difficault : SomeItem에서

  • 이 필요한 일이 같은

뭔가를 변경/SomeItem의 속성에 대응 듣다 INotifyPropertyCahnged ViewModel에서

  • 를 구현하고 있습니까? –

  • +0

    이 이벤트는 셀을 입력 할 때마다 트리거됩니다. 그것은 어느 것을 결정하기가 어렵습니다. 정확히 초점이 셀에 들어가거나 떠났을 때와 사라진 시점을 확인하는 더 좋은 방법이 있는지 궁금합니다. –

    답변

    0

    당신이 데이터 그리드에 ItemSource을 설정하는 데 사용하고 있기 때문에 당신은 분명 몇 가지 List<SomeItem>을 노출하고 뷰 모델.

    //when populating your List, before adding each SomeItem subscribe to IPropertyChanged 
    var newItem = new SomeItem();//..some properties I assume 
    newItem.PropertyChanged += (s,e) => 
    { 
        switch(e.PropertyName) 
        { 
          case "Column#4Property" : 
         //Do work that responds to that property changed 
         break; 
        } 
        _myList.Add(newItem); 
    
    관련 문제