Jade-ERP #6 – Rozwojowe zmiany

Przyszedł czas na podsumowanie prac nad projektem. Zmiany, które wprowadziłem są zdecydowanie rozwoje. W tym tygodniu rozpocząłem implementację okien dialogowych oraz zmieniłem podejście przy korzystaniu z Entity Framework.

 

 

Okna dialogowe

Po lekturze książki MVVM i XAML w Visual Studio 2015, postanowiłem zastosować przedstawione w niej podejście do tworzenia okien dialogowych w projektach wykorzystujących wzorzec MVVM.

Otóż tworzymy klasę abstrakcyjną, która będzie naszą bazą dla przyszłych okien dialogowych. Dziedziczymy w niej po FrameworkElement , więc z powodzeniem możemy umieszczać takie okno z widoku XAML.  Przykładowa implementacja (kod pochodzi z wymienionej książki):

public abstract class DialogBox : FrameworkElement, INotifyPropertyChanged
{
    protected Action<object> execute;
    protected ICommand show;
    public string Caption { get; set; }

    public virtual ICommand Show
    {
        get
        {
            if (show == null) show = new RelayCommand<object>(execute);
            return show;
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected void OnPropertyChanged(string nazwaWłasności)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(nazwaWłasności));
    }

}

 

Delegat execute zawierający kod odpowiedzialny za pokazanie konkretnego okna zostanie zdefiniowany w klasach pochodnych. Dzięki czemu mamy swobodę tworzenia spersonalizowanych okien dialogowych. Przykładowa klasa pochodna:

public class SimpleMessageDialogBox : DialogBox
{
    public SimpleMessageDialogBox()
    {
        execute =
        o =>
        {
            MessageBox.Show((string)o, Caption);
        };
    }
}

 

Tak przygotowane okno możemy umieścić w widoku, w którym ma zostać uruchomione.

<local:SimpleMessageDialogBox x:Name="simpleMessageDialogBox" Caption="Okno dialogowe" />
<ButtonCommand="{Binding ElementName=simpleMessageDialogBox, Path=Show}"
CommandParameter="Zawartość" />

 

Wyżej przedstawione definicje okien mogą zostać z powodzeniem użyte do tworzenia okien informacyjnych. Zdecydowanie przydatne będą okna gdzie będziemy mieli możliwość wykonania pewnych działań przed uruchomieniem i po zamknięciu okna. Nie udało mi się jeszcze zaimplementować takich okien w projekcie, dlatego nie będę przedstawiał przykładu.

 

 

Entity Framework

Na początku prac nad projektem zdecydowałem, że będę korzystał z podejścia model-first. Pomyślałem, że więcej nauczę się kiedy zmienię podejście na code-first, gdzie wszystko przejdzie mi “przez palce”. Póki co dokonałem pierwszej migracji.

 

Muszę przyspieszyć

Zdecydowanie muszę przyspieszyć pracę nad projektem, niestety bardzo trudno jest mi wygospodarować dodatkowy czas. Wszystko wskazuje na to, że będę musiał programować przy świątecznym stole. Do następnego!

Mam coś dla Ciebie

Zapisz się do mojego newslettera, a ja prześlę Ci zbiór kilkunastu praktycznych wskazówek dla programisty aplikacji mobilnych.

Menu