MVVM - RaisePropertyChanged, превращающий код в путаницу

В новинку для MVVM поэтому извините мое незнание.

Я ДУМАЮ, что использую его право, но я нахожу, что мой ViewModel имеет слишком многие из них:

RaisePropertyChanged("SomeProperty")

Каждый раз, когда я установил свойство, я должен повысить то проклятое измененное свойство.

Я пропускаю дни, куда я мог просто пойти:

public int SomeInteger { get; private set;}

В эти дни я должен засунуть "RaisePropertyChanged" в везде, или мой UI не отражает изменения :(

Я делаю его неправильно, или другие люди раздражают из-за чрезмерного количества волшебных строк и старых школьных методов set свойства?

Я должен использовать свойства зависимости вместо этого? (Я сомневаюсь, что это помогло бы коду чрезмерно увеличиться в размерах так или иначе),

Несмотря на эти проблемы я все еще думаю, что MVVM является способом пойти так, я предполагаю, что это - что-то.

9
задан AnthonyWJones 31 March 2010 в 13:14
поделиться

3 ответа

Взгляните на это Какое лучшее или самое интересное использование методов расширения вы видели? .

Он описывает метод расширения и вспомогательный метод, которые мои классы Model и ViewModel используют для включения следующих строго типизированных (без магической строки) свойств.

private string _name;
public string Name
{
    get { return _name; }
    set { this.NotifySetProperty(ref _name, value, () => this.Name); }
}

Это настолько просто, насколько я думаю. Надеюсь, это поможет.

12
ответ дан 4 December 2019 в 09:12
поделиться

Это помогает взглянуть на вещи с другой точки зрения: это не сложные свойства .NET, а упрощенные свойства зависимостей.

Привязываемые свойства модели представления в WPF не идентичны свойствам .NET, а представляют собой своего рода хранилище значений ключей. Если вам нужна легкая альтернатива DependencyObject, у вас есть возможность реализовать это хранилище ключей и значений, просто купив вызов определенной функции в установщиках - на самом деле, неплохо. Конечно, тоже далеко не идеально, но ваша точка зрения определенно несправедлива.

4
ответ дан 4 December 2019 в 09:12
поделиться

Вы можете использовать атрибут PostSharp NotifyPropertyChanged. Затем все, что вам нужно сделать, это добавить атрибут в класс и все. Например: [

[NotifyPropertyChanged]
public class MyClass 
{
    public string MyProperty { get; set; }
}
]
7
ответ дан 4 December 2019 в 09:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: