Как создать собственное событие при изменении свойства? - PullRequest
0 голосов
/ 11 марта 2012

Я создал свой собственный класс, который имеет открытые свойства типа данных double X и Y, когда один из них будет изменен, я хочу, чтобы сработало событие, которое будет использоваться для обновления позиции визуального объекта, какхолст или что-то.Я искал ответы в Интернете, и я не очень понимаю, как правильно это сделать.Я новичок в программировании, и я видел, как люди упоминают INotifyPropertyChanged, но я не знаю, как его использовать или куда помещать вещи.

Я хочу, чтобы произошло событие, когда X или Y изменились, чтоЯ могу прикрепить метод к .. пожалуйста, помогите

Ответы [ 3 ]

0 голосов
/ 11 марта 2012

Если все, что вы хотите сделать, является частью того же класса, вы можете просто использовать сеттер:

public class Something
{
    private string _Message;
    public string Message
    {
        get { return _Message;
        set
        {
            if (_Message != value)
            {
                _Message = value;
                CallSomeMethod();
            }
        }
    }

    public void CallSomeMethod()
    {
        Debug.WriteLine("Message is now: " + Message);
    }
}
0 голосов
/ 11 марта 2012

Вам нужно выучить Делегаты и мероприятия

MSDN также имеет пример , который в значительной степени соответствует тому, что вы просите

С той же страницы это соответствующий раздел;

    public void Update(double d)
    {
        radius = d;
        area = 3.14 * radius * radius;
        OnShapeChanged(new ShapeEventArgs(area));
    }
    protected override void OnShapeChanged(ShapeEventArgs e)
    {
        // Do any circle-specific processing here.

        // Call the base class event invocation method.
        base.OnShapeChanged(e);
    }
0 голосов
/ 11 марта 2012

Внутри вашего класса модели представления в установщиках ваших свойств X и Y вы можете вызывать ваш метод обновления:

    public double X
    {
        get
        {
            return x;
        }
        set
        {
            if (value != x)
            {
                x= value;
                OnPropertyChanged("X");
                VisualObjectUpdateMethod();
            }
        }
    }
    private double x;

Логика для обновления того, что вы хотите обновить, будет расположена в VisualObjectUpdateMethod.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...