Я хотел бы кэшировать некоторые свойства, специфичные для пользовательского интерфейса, только тогда, когда объект является DataBound, если он привязан.C# - Можно ли обнаружить, когда DataBound?
Скажем, у меня есть
public interface IAmA<T>()
{
T Value {get;set;}
}
public class MyString : IAmA<string>, INotifyPropertyChanged {
private string _value = String.Empty;
public virtual string Value
{
get
{
return this._value;
}
set
{
this._value = value;
OnPropertyChanged();
}
}
public virtual event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
PropertyChangedEventHandler handler = this.PropertyChanged;
if (handler != null)
{
var e = new PropertyChangedEventArgs(propertyName);
handler(this, e);
}
}
}
Можно ли осуществить действие или событие, чтобы стрелять в то время объект DataBound?
event Action OnDataBound { ... }
Так что я могу обнаружить, скажем, когда
MyString myStrObj = new MyString("text");
myStrObj.OnDataBound += CacheUIElements();
Do.OtherStuff();
otherObj.DataSource = myStrObj; //causes CacheUIElements() to fire
Нет, я уже могу запустить OnPropertyChanged, если значение изменено, я редактировал исходный вопрос с более подробной информацией. – TaterJuice
Точно то, чего я пытаюсь избежать, если это возможно. Я хочу реализовать его в исходном классе, поэтому я могу использовать его с произвольными типами - или все, что реализует привязку данных. – TaterJuice
Изменяет ли ваш первоначальный класс - свойство свойства «OtherClass»? и запускать PropertyChanged («DataSource») случайно? – CarbineCoder