2013-02-11 4 views
2

나는 이름과 평균을 포함하는 ObservableCollection이 있습니다. 이름 평균 인의ObservableCollection 개체의 값 업데이트

Name1 2.15 % 
Name2 1.24 % 
Name3 3.25 % 


     2.21 % 

목록 : 다음

내가 가지고는 TextBlock에 느릅 나무는

아이디어 같은 것을하는 것입니다 위의 컬렉션에서 그 평균에 평균을 얻을 수있는 컨버터를 사용 리스트 박스에 있고 컬렉션에서 오는 경우, 아래 평균의 평균은 값을 평균화하는 변환기를 통해 동일한 콜렉션에 바인드 된 텍스트 블록에 있습니다.

이 모든 것이 올바르게 작동합니다. 이제 목록 상자의 평균 값은 텍스트 상자에 있고 편집 할 수 있지만 편집 할 때 개체의 속성 만 컬렉션 자체가 아니라 속성 변경 알림을 보내기 때문에 평균의 평균값이 업데이트되지 않습니다. .

줄의 평균 값이 변경되면 아래 값을 업데이트하는 방법이 있습니까?

+0

왜 당신이 당신의 지원 코드의 일부를 게시하지 않습니다

//Get my objects and subscribe to their property change event MyObjects = GetMyObjects(); foreach (var item in MyObjects) { item.PropertyChanged += (sender, e) => { if (e.PropertyName == "Value") { Average = MyObjects.Average(x.Value); } }; } 

그리고 여기에 새 뷰 모델의 속성입니다 ? 그런 식으로 올바른 방향으로 당신을 가리키는 것이 훨씬 쉽습니다. –

+0

@DavidL - 오브젝트의 속성 변경이 컬렉션으로 변경되어보고되는 방식으로 바뀌는 것은 당연한 것입니다. 사다리 위로 물건을 알려주는 방법이 있는지 아는 것이 중요합니다. 통지는 객체까지 객체에 전달하고, 객체를 보유한 객체까지 전달합니다. 이 코드와 관련된 특정 부분을 염두에 두시겠습니까? – 537mfb

+0

@ 537mfb 데이비드 L의 의견을 뒷받침하기 위해 작업 할 클래스 및 속성 이름이 있으면 도움이되는 것이 더 쉽습니다. – Khan

답변

2

디자인을 변경하는 것이 좋습니다.

컬렉션의 평균을 나타내는 ViewModel에 속성을 만들고 텍스트 상자를 새 속성에 바인딩합니다. 예를 들어

... get 메소드의

장소 :

//Bind your textbox to this guy 
    double _Average; 
    public double Average 
    { 
     get { return _Average; } 
     set 
     { 
      if (_Average != value) 
      { 
       _Average = value; 
       OnNotifyPropertyChanged("Average"); 
      } 
     } 
    } 
+0

흥미로웠다 - 내가 시도 했었지만 충분히 쓸만하다 - 시험해 볼 것이고 기대했던대로 작동한다면 나에게서 올바른 답을 얻을 수있다. – 537mfb

+0

은 처음에는 약간의 문제가 있었는데, 값 중 하나에서 - 어떤 경우에는 빈 콜렉션으로 초기화 - 한 번 제대로 올바른 값으로 초기화하는 방법을 알게되면 매력처럼 작동합니다. - 감사합니다 – 537mfb

+0

upvote도 감사하겠습니다 :). 내 대답이 도움이된다면 말이다. 응답에 체크 표시를하고 특히 도움이되는 항목에 대해서는 upvote를 기억하십시오. 둘 다 할 수 있습니다. – Khan

관련 문제