2014-06-16 2 views
2

3 개의 속성 (x1, x2, x3) 및 PropertyChangedCallback을 가진 개체 모음이 해당 속성에 대해 있습니다.PropertyChangedCallback 지원과 함께 동적 속성을 추가하는 가장 좋은 방법은 무엇입니까?

이 컬렉션은 Wpf DataGrid에 바인딩됩니다. 그런 다음 동적 속성 (사용자가 정의하지 않음 사용자 정의)을 "x1 + x2"와 같은 수식을 사용하여이 개체에 추가하려면 x1이 동적 속성을 변경하고 propertychanged를 올리면 PropertyChangedCallback을 지원합니다.

이 시나리오를 해결하기위한 최선의 방법은 무엇입니까?

답변

1

처음에는 사전 < 문자열, 개체> 속성을 ​​선언 할 수 있습니다. 수업 시간에. 런타임시 사전에 Key라는 속성 이름과 해당 키의 속성 값을 추가하십시오. IValueConverter를 사용하여 사전에 뷰를 바인딩하십시오. 변환기 내부 Convert 메서드는 키 또는 인덱스를 사용하여 동적 속성 값을 얻기 위해 코드를 작성합니다. 속성 x1 또는 x2가 변경 될 때마다 x3 값 (x1 + x2)을 업데이트 한 다음 x1/x2와 사전에 대한 속성 변경 알림을 발생시킵니다.

예는 :

private Dictionary< string,object > properties; 
public Dictionary<string, object> Properties 
{ 
    get { return properties; } 
    set { properties = value; } 
} 

private int x1; 

public int X1 
{ 
    get { return x1; } 
    set 
    { 
     x1 = value; 
     UpdateDictionaryValue(); // Updates the current X3 Value 
     OnPropertyChanged("X1"); 
     OnPropertyChanged("Properties"); 
    } 
} 
public void UpdateDictionaryValue() 
{ 
    if (Properties.ContainsKey("X3")) 
    { 
     Properties["X3"] = X1 + X2; 
    } 
} 

날이 도움이 있는지 알려주십시오.