• Как правильно написать на MVVM?

    yarosroman
    @yarosroman Куратор тега C#
    C# the best
    Для начала, возьмите какой нибудь MVVM framework (SimpleMVVM, MVVMLight, у них есть куча примеров), делаем свой view, ViewModel. В этих фрейморках уже реализованы базовые классы для создания VM (реализован INotyfyPropertyChanged). В VM надо добавить необходимые свойства, с которыми будет привязка свойств элементов. Так же желательно сделать класс-сервис, который будет создавать по требованию модель, экземпляр класса прописать в App.Resources, и биндить необходимую VM сразу в Xalm, к DataContext="{Binding GroupsViewModel, Mode=OneWay, Source={StaticResource Locator}}">(у локатора есть свойство GroupsViewModel, в котором зоздается необходимый VM, передаются все параметры на сервисы (например работа с БД).

    создание и передача элементов, или работа с контролами напрямую, увеличивает связанность кода, и тд.

    те, например в вашем случае:

    locator.cs
    public class Locator
    {
      public MainViewModel MainVM 
      {
          get {return new MainViewModel(); }
      }
    }


    MainViewModel.cs
    public class MainViewModel : Notifier
        {
           MainViewModel ()
           {
           }
    
            string address;
            public string Address;
            {
                get { return address; }
                set { address = value; OnPropertyChanged("Address"); }
            }
    
            string someControlText;
            public string SomeControlText
            {
                get { return someControlText; }
                set { someControlText = value; OnPropertyChanged("SomeControlText"); }
            }
        }


    в App.xaml в ресурсы прописываем (естественно добавляем необходимые xmlns)
    <Locator x:Key="Locator"/>

    MainView.xaml
    <UserControl x:Class="GPClient.View.BrowserView" DataContext="{Binding MainViewModel, Source={StaticResource Locator}}">>
        <ChromiumWebBrowser Address="{Binding Path=Address, Mode=TwoWay}"/>
        <SomeControl Text="{Binding Path=SomeControlText, Mode=TwoWay}" />
      </UserControl>


    Все дело в Mode=TwoWay. если элемент сам устанавливает свойство, то оно автоматом обновляется в VM, и наоборот, те если вам надо перейти на адрес, в методе в VM пишем Address="http://перейди-на.сайт"; обращаемся к полю VM, а не к приватному члену, иначе не вызовется PropertyChanged, с SomeText, так же.
    Если у нас есть TextBox, то привязка таким образом позволяет получать введенное в него значение.

    для привязки методов, и событий, используются Command и триггеры в XAML.

    У вас тут немного спутано понятие ViewModel и Model. В VM прописываются, свойства, к которым будет привязка элементов View, а Model, это данные с которыми мы работаем, например модель БД, классы в которые сериализуется XML.

    Скачайте MVVMLight, SimpleMVVM, это простые фреймворки, с хорошими примерами и легковесные.
    Ответ написан
    2 комментария
  • Какие технологии и подходы можно применить для синхронизации данных приложения для Windows Phone 8.1?

    MikhailD
    @MikhailD
    Developer
    Если требуется синхронизировать данные только между девайсами, без WEB и других платформ, самый простой способ - использовать roaming storage https://msdn.microsoft.com/en-us/library/windows/a...
    Ответ написан
    2 комментария