Мышь, как вы знаете, является статическим классом. У него есть статическое свойство с именем Mouse.Position
. Это свойство обновляется динамически (возможно, привязывается к мыши ??). (Я прочитал документацию по мыши в msdn)
Мне нужно построить тот же класс с этим сценарием.
Я делаю приложение, которое может иметь несколько страниц, и каждая из страниц разделяет, например, значение Margin
.
Есть 2 варианта (я думаю), чтобы сделать это:
- Создайте поле в классе «страница» и передайте значение через конструктор (самый простой)
- Статический класс, аналогичный использованию
Mouse.Position
, но в данном случае, например,PageInformation.Margin
(PageInformation
— это класс, а не свойство и не поле)
Я предпочитаю второй вариант, так как его легче отлаживать (я думаю), и сделать класс Page более чистым, без кода и проще во время обновления, если Margin каким-то образом изменился пользователем.
Кто-нибудь знает, как это сделать? (предпочтительный способ mvvm)
Спасибо.
ОБНОВЛЕНИЕ: P.S. Я уже понимаю базовую практику mvvm (INPC и тому подобное)
Это общий код в моем приложении:
public class ViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
...
}
public class SheetPage : ViewModel
{
...
}
INotifyPropertyChanged
? - для первого: я не думаю, что наличие поля страницы в качестве глобальной переменной - хорошая идея, и почему это должно быть легче отлаживать? Глобальные переменные, как правило, усложняют понимание и отладку в долгосрочной перспективе. - person Random Dev   schedule 04.09.2014Mouse.Position
тоже делает? - person Moses Aprico   schedule 04.09.2014INotifyPropertyChanged
. - person nvoigt   schedule 04.09.2014