Я полагаю, вы можете создать свой собственный класс, который сохраняет значение и поднимает INotifyPropertyChanged
против вмещающего класса, который вы могли бы создать как:
public Bindable<string> SomeField = new Bindable<string>("test", this);
а потом Binding против SomeField
доступ будет содержащейсом значения и установить его может привести к INotifyPropertyChanged
воспитывается против this
Вы должны были бы использовать некоторые неявные оператор приведения для того, чтобы получить обязательную систему, чтобы видеть ваш Bindable<T>
как источник T
и место поставить T
См: http://msdn.microsoft.com/en-us/library/85w54y0a.aspx
Что-то вдоль линий следующих может хватить:
public class Bindable<T>
{
private T _value;
private PropertyChangedEventHandler _notifyHandler;
private INotifyPropertyChanged _notifyTarget;
private string _name;
public Bindable(PropertyChangedEventHandler notifyHandler, INotifyPropertyChanged notifyTarget, string name, T value = default(T), bool trigger = false)
{
_value = value;
_name = name;
_notifyHandler = notifyHandler;
_notifyTarget = notifyTarget;
if (trigger)
{
_notifyHandler(_notifyTarget, new PropertyChangedEventArgs(_name));
}
}
public implicit operator T(Bindable<T> bindable)
{
return bindable._value;
}
public implicit operator Bindable<T>(T value)
{
return new Bindable<T>(_notifyHandler, _notifyTarget, _name, value, true);
}
}
Вышеприведенный код является грубым, и, несомненно, можно создать лучшую версию, но она должна указывать на то, что вам нужно.
При дальнейшем исследовании предложенным моем решения я обнаружил, что это было бы проблематично попасть на работу из-за неявные отлитый из T
в Bindable<T>
, чтобы вспомнить цели и другие детали, я уверен, такое решение содержит достаточно идей, чтобы привести к рабочему.
Нет дубликата, так как на вопрос не ответили в пределах возможного дубликата. –
привязка работает только с публичными объектами. Вот как работает привязка wpf. так короткий ответ: НЕТ. вы должны привязываться к свойствам – blindmeis