Привязка к автообновляемому объекту? - PullRequest
0 голосов
/ 05 марта 2009

Есть ли объект или интерфейс, который я могу использовать для создания объекта автообновления, и чтобы эти обновления были отфильтрованы до пользовательского интерфейса в WPF?

В основном я ищу что-то вроде этого:

<TextBlock Text="{Binding Source={StaticResource myClass}, Path=DataObject}" />

public class MyClass
{
    public AutoUpdatingObject DataObject { get; set; }
}

public class AutoUpdatingObject: ???
{
    ???
}

Нет, я не могу заставить MyClass реализовать INotifyPropertyChanged. Мне нужен класс AutoUpdatingObject, чтобы иметь возможность уведомлять WPF об изменениях.

1 Ответ

1 голос
/ 05 марта 2009

Реализация INotifyPropertyChanged - не единственный способ обновления привязок, вы также можете использовать события без реализации интерфейса.

Использование класса CLR в качестве исходного объекта привязки

Если вы не реализуете INotifyPropertyChanged, то вы должны организовать собственное уведомление система, чтобы убедиться, что данные используются в привязке остается в силе. Вы можете предоставлять уведомления об изменениях поддержка шаблона PropertyChanged для каждого свойства, которое вы хотите изменить уведомления для. Чтобы поддержать это шаблон, вы определяете Событие PropertyNameChanged для каждого свойство, где PropertyName является Наименование имущества. Вы поднимаете событие каждый раз, когда свойство изменяется.

В вашем случае MyClass будет выглядеть так:

public class MyClass
{
    private AutoUpdatingObject dataObject;
    public AutoUpdatingObject DataObject
    {
        get { return dataObject; }
        set { dataObject = value; DataObjectChanged(this, new EventArgs()); }
    }

    public event EventHandler DataObjectChanged = delegate { };
}
...