2010-05-21 2 views
1

В подходе MVVM, как я могу привязываться к Properties.Settings? Есть ли способ связать свойство в коде C# (в ViewModel) с другим свойством (Properties.Settings.Default), или я должен просто привязываться к стандартным свойствам и сохранять, чтобы каждое свойство было передано вручную в Properties.Settings?MVVM Связывание с Properties.Settings

ответ

4

Что-то вроде последнего: выставлять настройки в Properties.Settings.Default с помощью свойств в ViewModel, подходящих для представления.

public class SomeViewModel 
{ 
    public int SomeProperty 
    { 
     get 
     { 
      return Properties.Settings.Default.SomeProperty; 
     } 
     set 
     { 
      Properties.Settings.Default.SomeProperty = value; 
     } 
    } 
} 

... или код по этому вопросу.

+0

Это точно такой шаблонный код, который я стараюсь избегать: вы не добавляете ничего нового. Вместо того, чтобы сделать эту работу правильно, вы должны запустить INPC, когда вы измените значение в свойстве. Кроме того, вы должны прислушиваться к изменениям свойств в модели (настройки в этом случае), а также запускать INPC при изменении базовой модели. Все это, поэтому вы привязываетесь к ViewModel.Property, а не к параметрам Settings.Property или ViewModel.Settings.Property? –

2

Настройки реализуют INPC, поэтому вы можете просто привязать непосредственно к настройкам с вашего вида. Помните, что вам нужно вручную вызвать Save() в настройках, чтобы фактически сохранить их в изолированном хранилище.

+0

Я бы не рекомендовал напрямую привязываться к настройкам, так как это не очень похоже на MVVM. Исключением может быть, если представление ничего не делало, но позволяло отображать/редактировать вещи в настройках, но даже тогда я бы не захотел рассмотреть Properties.Settings.Default правильную ViewModel. – allonym

+1

MVVM очень субъективен в некоторых аспектах. Если настройки (которые в основном (часть) модели) имеют необходимые свойства, я не вижу проблем, непосредственно связанных с ними. Я также привязываю непосредственно к моей модели для некоторых свойств, которые уже находятся в правильном типе. Я не вижу смысла использовать код шаблона VM, который просто восстанавливает все свойства модели. –

+0

как вы собираетесь тестировать, что представление действительно получает правильные настройки? Вы не можете, потому что вы сделали ярлык мимо viewmodel ... –

Смежные вопросы