하나의 옵션은 개체가 INotifyPropertyChanged
interface 매우 표준을 구현하는 것입니다. 객체의 모든 속성이 PropertyChanged
를 인상해야한다는 주장에는 규칙이 없다 이벤트는, 그래서 그냥 문제의 하나 개의 속성을 올릴 뭔가를 같이 :.
public class MyObject : INotifyPropertyChanged
{
private string _myProperty;
public string MyProperty
{
get { return _myProperty; }
set
{
_myProperty = value;
NotifyPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
당신의 .NET 버전이 CallerMemberName
를 지원하지 않는 경우에 당신은 그것을 제거 할 수 있습니다 수동으로 속성 이름을 제공 :
을
NotifyPropertyChanged("MyProperty");
이 시점에서 모든 호출 코드는이 개체의 모든 인스턴스에서 공용 PropertyChanged
이벤트를 구독 할 수 있습니다. 이 인터페이스는 데이터 바인딩 된 UI 요소를 업데이트하기 위해 많은 UI 기술에서 일반적으로 사용되기 때문에 특히 편리합니다. 모든 인터페이스 적용은 실제로 이벤트의 표준 이름입니다. 원하는 경우 인터페이스를 사용하지 않고 사용자 정의 공용 이벤트를 만들 수 있습니다. 그리고 당신의 객체가 논리적으로 필요할 때마다 그 이벤트를 호출하십시오. 이벤트를 노출하고 호출하는 구조는 동일합니다.
해당 변수가 개체의 속성입니까? 객체는 표준 인터페이스로'INotifyPropertyChanged'를 구현하고 속성의 설정자에서'PropertyChanged' 이벤트를 호출 할 수 있습니다. – David
Wery 좋은 아이디어, 내 변수를 속성으로 만드는 방법을 살펴 보겠습니다. 감사! – Dave
그래서 IndexChanged에 대한 속성을 추가했습니다 : 'public int SelectedIndex { get; 개인 집합; // set {selectedIndex = value; } }' 이제이 속성에 대해서만 ** INotifyPropertyChanged **를 추가하여 값이 변경 될 때 이벤트를 트리거하도록합니까? – Dave