Zarządzanie widokiem i jego elementami

Elementy interfejsu (kontrolki) mogę być modyfikowane poprzez zmianę kolorów zarządzalnych bezpośrednio –  Kolor motywu (ThemeColor) i Kolor tła (ThemeBackground), w panelu Konfiguracja interfejsu,  globalnie, wszystkie kontrolki danego typu na raz, w panelu Globalne elementy lub lokalnie, niezależnie per widok, w panelu Zarządzanie widokami. Zmiana dowolnego parametru kontrolki lokalnie ma wyższy priorytet nad zmianą globalną.

Layout.Id

Działanie zarządzania widokiem zależne jest od kilku czynników. Pierwszym jest odpowiednia rejestracja widoku (użycie metody RegisterViews z klasy ModuleBase) oraz utworzenie odpowiedniego view-modelu dla trybu design (DesignViewModel), drugim jest oznaczanie kontrolek odpowiednim atrybutem.

Atrybut ten to Layout.Id, musi on być unikalny w skali całej aplikacji POS. Jest to warunek niezbędny do tego, aby kontrolka była zarządzalna niezależnie. Jeżeli kilka kontrolek będzie miało ten sam Id zmiana właściwości na jednej spowoduje zmianę także dla drugiej kontrolki.

Ustawienie domyślnych wartości zarządzalnych właściwości

Domyślne wartości dla kontrolek można ustawiać na kilka sposobów w zależności od potrzeb.

  1. Bezpośrednio jako atrybuty zdefiniowanej kontrolki w xamlu
<TextBlock Foreground="Red"/>

 

Powyższa kontrolka nie będzie zarządzalna, ponieważ nie został zdefiniowany na niej atrybut Layout.Id

Można również połączyć to ze Schematy kolorystyczne oraz czcionka :

<TextBlock Foreground="{DynamicResource ThemeColor}"/>

 

Kontrolka zarządzalna będzie tylko poprzez zmianę motywu kolorystycznego (zmianie ulegnie kolor czcionki).

Aby kontrolka mogła być zarządzalna globalnie w konfiguracji globalnej interfejsu, należy ją zarejestrować za pomocą metody RegisterControl z klasy ModuleBase.

Aby kontrolka była zarządzalna lokalnie per widok, w którym została użyta (zarządzanie widokami), widok ten musi być odpowiednio zarejestrowany (za pomocą metody RegisterViews) oraz kontrolka musi posiadać atrybut Layout.Id. W przypadku użycie Layout.Id nie należy ustawiać domyślnych właściwości kontrolki bezpośrednio na kontrolce. Zdefiniowanie wartości domyślnej np. Foreground przed określeniem Layout.Id skutkować będzie ignorowaniem tej właściwości. Natomiast ustawienie Foreground po Layout.Id spowoduje, że właściwości nie będzie zarządzalna (zawsze będzie nadpisywana ustawiona bezpośrednio wartością).

Ustawianie atrybutów bezpośrednio powinno być wykonywane tylko dla właściwości niezarządzalnych, np. takich które są niezbędne do poprawnej pracy kontrolki (np. Binding).

 

  1. Styl globalny kontrolki lub lokalny (z użyciem x:Key)
<core:View.Resources>
        <Style TargetType="TextBlock" BasedOn="{StaticResource {x:Type TextBlock}}">
            <Setter Property="Foreground" Value="Red"/>
            <Setter Property="Background" Value="{DynamicResource ThemeBackground}"/>
        </Style>
</core:View.Resources>
..
<TextBlock core:Layout.Id="TextBlockLayoutId" />

 

Powyższy przykład ilustruje globalne ustawienie stylu koloru czcionki oraz tła dla wszystkich kontrolek TextBlock użytych w aktualnym widoku <core:View>.

<core:View.Resources>
        <Style x:Key="TextBlockStyle" 
               TargetType="TextBlock" BasedOn="{StaticResource {x:Type TextBlock}}">
            <Setter Property="Foreground" Value="Red"/>
            <Setter Property="Background" Value="{DynamicResource ThemeBackground}"/>
        </Style>
</core:View.Resources>
…
<TextBlock Style="{StaticResource TextBlockStyle}" core:Layout.Id="TextBlockLayoutId" />

 

Powyższa modyfikacja pokazuje jak za pomocą styli ustawić tylko wybraną kontrolkę.

 

  1. Atrybut domyślny zdefiniowany w ModernUI.xaml zgodnie z definicją <typ_atrybutu x:Key=”[LayoutId].Default.[Nazwa_typu]”>[wartość domyslna]</typ_atrubutu>

Plik ModernUI.xml

<SolidColorBrush x:Key="TextBlockLayoutId.Default.Foreground" Color="Red"/>

Plik widoku

<TextBlock core:Layout.Id="TextBlockLayoutId" />

 

Warunkiem wymaganym do poprawnego działania powyższego przykładu jest zarejestrowanie zasobów ModernUI.xaml modułu w klasie rejestrującej moduł (Nowy moduł). W konstruktorze wywołujemy:

LayoutService.RegisterResources(typeof(Module));

 

Ograniczeniami takiego podejścia jest niemożliwość zdefiniowania dynamicznych wartości oraz zgrupowania powtarzających się wartości pod wspólną nazwą. Przykładowo nie jest poprawne użycie następującego kodu:

<SolidColorBrush x:Key="TextBlockLayoutId.Default.Foreground" 
            Color="{DynamicResource ThemeColor}"/>

 

W tym przypadku typ Color (System.Windows.Media.Color) oraz ThemeColor (SolidColorBrush) są niezgodne!

Użycie tego sposobu jest obecnie niezalecane. Wyjątek stanowi definiowane domyślnych parametrów dla kolumn DataGrida.

Lista wspieranych właściwości

Poniższe tabelki zawierają wykaz właściwości, które są zarządzalne z panelu konfiguracji interfejsu dla poszczególnych kontrolek dostępnych w POS.

 

Typ kontrolki

Właściwość Nazwa
Wspierana właściwość [nazwa : typ] Nazwa właściwości w panelu zarządzania

 

FrameworkElement

System.Windows.FrameworkElement

Właściwość Nazwa
Width : double Szerokość
Height : double Wysokość
Margin : Thickness Margines
HorizontalAlignment : HorizontalAlignment Wyrównanie w poziomie
VerticalAlignment : VerticalAlignment Wyrównanie w pionie
MaxWidth : double Maks. szerokość
MaxHeight : double Maks. wysokość
Grid.Position : string Położenie

Control

System.Windows.Controls.Control

 

Właściwość Nazwa
Background : Brush Tło
Foreground : Brush Kolor tekstu
FontSize : double Rozmiar czcionki
FontWeight : FontWeight Waga czcionki
FontStyle : FontStyle Styl czcionki
Padding : Thickness Wypełnienie
Grid.Position : string Położenie

Grid

System.Windows.Controls.Grid

 

Właściwość Nazwa
Background : Brush Tło
Margin : Thickness Margines
Visibility: Visibility Widoczność
Width: double Szerokość
Height: double Wysokość
Grid.Position : string Pozycja

 

Comarch.POS.Presentation.Core.Controls.Grid

: System.Windows.Controls.Grid

 

Właściwość Nazwa
ColumnDefinition : string Kolumny
RowDefinition : string Wiersze

Border

System.Windows.Controls.Border

 

Właściwość Nazwa
Visibility : Visibility Widoczność
Background : Brush Tło

ScrollViewer

System.Windows.Controls.ScrollViewer

: System.Windows.Controls.Control

 

Właściwość Nazwa
VerticalScrollBarVisibility : ScrollBarVisibility Pionowy pasek przewijania
HorizontalSchrollBarVisibility : ScrollBarVisibility Poziomy pasek przewijania
Width: double Szerokość
Height : double Wysokość

 

Comarch.POS.Presentation.Core.Controls.ScrollViewer

: System.Windows.Controls.ScrollViewer

 

Właściwość Nazwa

Separator

System.Windows.Controls.Separator

: System.Windows.FrameworkElement

 

Właściwość Nazwa
Background : Brush Tło

TextBlock

System.Windows.Controls.TextBlock

: System.Windows.FrameworkElement

 

Właściwość Nazwa
Background : Brush Tło
Foreground : Brush Kolor tekstu
FontSize : double Rozmiar czcionki
FontWeight : FontWeight Waga czcionki
FontStyle : FontStyle Styl czcionki
Padding : Thickness Wypełnienie
TextAlignment : TextAlignment Wyrównanie tekstu
Visibility : Visibility Widoczność
TextWrapping : TextWrapping Zawijanie tekstu

DoubleColorTextBlock

Comarch.POS.Presentation.Core.Controls.DoubleColorTextBlock

: System.Windows.FrameworkElement

 

Właściwość Nazwa
FirstForeground : Brush Kolor tekstu 1
SecondForeground : Brush Kolor tekstu 2
Background : Brush Tło
FontSize : double Rozmiar czcionki
FontWeight : FontWeight Waga czcionki
FontStyle : FontStyle Styl czcionki
Padding : Thickness Wypełnienie
Visibility : Visibility Widoczność

ErrorTextBlock

Comarch.POS.Presentation.Core.Controls.ErrorTextBlock

: System.Windows.Controls.TextBlock

 

Właściwość Nazwa

TextBox

Comarch.WPF.Controls.TextBox

: System.Windows.FrameworkElement,

System.Windows.Controls.Control

 

Właściwość Nazwa
BorderThickness : Thickness Obramowanie
BorderBrush : Brush Kolor obramowania
FocusedBorderBrush : Brush Kolor obramowania (focus)
ErrorColor : Brush Kolor błędu
HintForeground : Brush Kolor podpowiedzi
Hint: string Kolor podpowiedzi

 

Comarch.POS.Presentation.Core.Controls.TextBox

: Comarch.WPF.Controls.TextBox

 

Właściwość Nazwa

Underline

Comarch.WPF.Controls.Underline

: System.Windows.FrameworkElement

 

Właściwość Nazwa
Stroke : Brush Kolor
StrokeThickness : Thickness Grubość

 

Comarch.POS.Presentation.Core.Controls.Underline

: Comarch.WPF.Controls.Underline

 

Właściwość Nazwa

 

ColumnDefinition

System.Windows.Controls.ColumnDefinition

 

Właściwość Nazwa
Width : double Szerokość

RowDefinition

System.Windows.Controls.RowDefinition

 

Właściwość Nazwa
Height : double Wysokość

DataGridColumn

System.Windows.Controls.DataGridColumn

 

Właściwość Nazwa
MaxWidth : double Maks. szerokość
MinWidth : double Maks. wysokość
Width : DataGridLength Szerokość
SortDirection : ListSortDirection Sortuj
Visibility : Visibility Widoczność
HorizontalAlignment : HorizontalAlignment Wyrównanie w poziomie

DataGridTemplateColumn

System.Windows.Controls.DataGridTemplateColumn

: System.Windows.Controls.DataGridColumn

 

Właściwość Nazwa

 

DataGridTextColumn

System.Windows.Controls.DataGridTextColumn

: System.Windows.Controls.DataGridColumn

 

Właściwość Nazwa
FontSize : double Rozmiar czcionki
Foreground : Brush Kolor tekstu
FontWeight : FontWeight Waga czcionki
FontStyle : FontStyle Styl czcionki

DataGridCell

System.Windows.Controls.DataGridCell

 

Właściwość Nazwa
Margin : Thickness Margines
HorizontalAlignment : HorizontalAlignment Wyrównanie w poziomie

DataGridColumnHeader

System.Windows.Controls.Primitives.DataGridColumnHeader

 

Właściwość Nazwa
Margin : Thickness Margines
HorizontalContentAlignment : HorizontalAlignment Wyrównanie zawartości w poziomie

DataGrid

Comarch.WPF.Controls.DataGrid

: System.Windows.FrameworkElement,

System.Windows.Controls.Control

 

Właściwość Nazwa

 

Comarch.POS.Presentation.Core.Controls.DataGrid

 

Właściwość Nazwa
RowBackground : Brush Tło wiersza
HeaderBackground : Brush Tło nagłówka
ScrollBarWidth : double Szerokość paska przewijania
VerticalScrollBarVisibility : Visibility Pionowy pasek przewijania
HorizontalScrollBarVisibility : Visibility Poziomy pasek przewijania
GroupBy : DataGridGroup Grupuj po
IsVirtualizingWhenGrouping : bool Wirtualizuj wiersze
ScrollUnit : ScrollUnit Jednostka suwaka
Grid.Position : string Pozycja

ItemsContainer

Comarch.POS.Presentation.Core.Controls.ItemsContainer

: System.Windows.FrameworkElement

 

Właściwość Nazwa
Orientation : Orientation Orientacja
Padding : Thickness Wypełnienie
Background : Brush Tło
MoreMultiButtonHeight : double Wysokość
MoreMultiButtonWidth : double Szerokość
MoreMultiButtonImageHeight : double Wysokość ikony
MoreMultiButtonImageWidth : double Szerokość ikony
MoreMultiButtonMargin : Thickness Margines
MoreMultiButtonImageMargin : Thickness Margines ikony
MoreMultiButtonFontSize : double Rozmiar czcionki
MoreMultiButtonIsImageVisible : bool Pokazuj ikonę

Expander

Comarch.POS.Presentation.Core.Controls.Expander

: System.Windows.FrameworkElement,

System.Windows.Controls.Control

 

Właściwość Nazwa
HeaderBackground : Brush Tło nagłówka
HeaderPadding : Thickness Wypełnienie nagłówka

Image

System.Windows.Controls.Image

: System.Windows.FrameworkElement

 

Właściwość Nazwa
Stretch : Stretch Rozciągaj
StretchDirection : StretchDirection Kierunek rozciągania

 

Comarch.WPF.Controls.Image

 

Właściwość Nazwa
HorizontalAlignment : HorizontalAlignment Wyrównanie w poziomie
HorizontalContentAlignment : HorizontalAlignment Wyrównanie zawartości w poziomie
VerticalAlignment : VerticalAlignment Wyrównanie w pionie
VerticalContentAlignment : VerticalAlignment Wyrównanie zawartości w pionie

 

Comarch.POS.Presentation.Core.Controls.Image

: System.Windows.FrameworkElement

 

Właściwość Nazwa
DefaultImageKey : ImageKey Domyślna ikona

BundleImage

Comarch.POS.Presentation.Core.Controls.BundleImage

 

Właściwość Nazwa
IconForeground : Brush Kolor
IconMargin : Thickness Margines
IconImageKey : ImageKey Ikona
Width : double Szerokość
Height : double Wysokość
PopupMaxWidth : double Maks. wysokość
PopupMinWidth : double Min. wysokość

Button

Comarch.POS.Presentation.Core.Controls.Button

: System.Windows.FrameworkElement,

System.Windows.Controls.Control

 

Inne bazujące na Button, np.:

Comarch.POS.Presentation.Core.Controls.AcceptButton

Comarch.POS.Presentation.Core.Controls.CancelButton

Comarch.POS.Presentation.Core.Controls.SelectButton

Comarch.POS.Presentation.Core.Controls.CleanButton

Comarch.POS.Presentation.Core.Controls.TileButton

Comarch.POS.Presentation.Core.Controls.PaymentTypeTile

Comarch.POS.Presentation.Core.Controls.PrintLabelButton

Comarch.POS.Presentation.Core.Controls. ShowItemsVariantsButton

 

Właściwość Nazwa
ImageKey : ImageKey Ikona
ImageMargin : Thickness Margines ikony
ImageWidth : double Szerokość ikony
ImageHeight : double Wysokość ikony
ImageHorizontalAlignment : HorizontalAlignment Wyrównanie w poziomie
ImageVerticalAlignment : VerticalAlignment Wyrównanie w    pionie
IsImageVisible : bool Pokazuj ikonę
ShortcutMargin : Thickness Margines
ShortcutWidth : double Szerokość
ShortcutHeight : double Wysokość
ShortcutHorizontalAlignment : HorizontalAlignment

 

Wyrównanie w poziomie

 

ShortcutVerticalAlignment : VerticalAlignment Wyrównanie   w pionie
IsShortcutVisible : bool Pokaż skrót
Shortcut : Shortcut Skrót klawiszowy
IsScaledShortcut : bool Skaluj zawartość
ContentMargin : Thickness Margines
ContentWidth : double Szerokość
ContentHeight : double Wysokość
ContentHorizontalAlignment : HorizontalAlignment Wyrównanie w poziomie
ContentVerticalAlignment : VerticalAligment Wyrównanie   w pionie
ContentVisibility : Visibility Widoczność
IsScaledContent : bool Skaluj zawartość
Orientation : Orientation Orientacja
ItemsContainer.NoWrapButton : bool Nie agreguj

RadioButton

Comarch.POS.Presentation.Core.Controls.RadioButton

: System.Windows.FrameworkElement,

System.Windows.Controls.Control

 

Właściwość Nazwa
CheckedStateBackground : Brush Tło wybranego element
CheckedStateForeground: Brush Tekst wybranego element
ImageKey : ImageKey Ikona
ImageMargin : Thickness Margines ikony
ImageWidth : double Szerokość ikony
ImageHeight : double Wysokość ikony
ImageHorizontalAlignment : HorizontalAlignment Wyrównanie w poziomie
ImageVerticalAlignment : VerticalAlignment Wyrównanie w    pionie
IsImageVisible : Visibility Pokazuj ikonę
ContentMargin : Thickness Margines
ContentWidth : double Szerokość
ContentHeight : double Wysokość
ContentHorizontalAlignment : HorizontalAlignment Wyrównanie w poziomie
ContantVerticalAlignment : VerticalAlignment Wyrównanie w pionie
ContentVisibility : Visibility Widoczność
IsScaledContent : bool Skaluj zawartość
Orientation : Orientantion Orientacja

FieldControl

Comarch.POS.Presentation.Core.Controls.FieldControl

: System.Windows.FrameworkElement

 

Właściwość Nazwa
Orientation : Orientation Orientacja
LabelMargin : Thickness Margines
LabelWidth : double Szerokość
LabelHeight : double Wysokość
LabelFontSize : double Rozmiar czcionki
LabelFontStyle : FontStyle Styl czcionki
LabelFontWeight : FontWeight Waga czcionki
LabelForeground : Brush Kolor tekstu
LabelForegroundError : Brush Kolor przy braku walidacji
LabelHorizontalAlignment: HorizontalAlignment Wyrównanie w poziomie
LabelVertivalAlignment: VerticalAlignment Wyrównanie w pionie
ContentIsRequired : bool Wymagana

CheckBox

Comarch.POS.Presentation.Core.Controls.CheckBox

: System.Windows.FrameworkElement,

System.Windows.Controls.Control

 

Właściwość Nazwa
CheckedStateBackground : Brush Tło wybranego element
CheckedStateForeground: Brush Tekst wybranego element
DisabledStateBackground : Brush Tło nieaktywnego
DisabledCheckedStateBackground : Brush Tło nieaktywnego wybranego
ImageKey : ImageKey Ikona
ImageMargin : Thickness Margines ikony
ImageWidth : double Szerokość ikony
ImageHeight : double Wysokość ikony
ImageHorizontalAlignment : HorizontalAlignment Wyrównanie w poziomie
ImageVerticalAlignment : VerticalAlignment Wyrównanie w    pionie
IsImageVisible : Visibility Pokazuj ikonę
ContentMargin : Thickness Margines
ContentWidth : double Szerokość
ContentHeight : double Wysokość
ContentHorizontalAlignment : HorizontalAlignment Wyrównanie w poziomie
ContantVerticalAlignment : VerticalAlignment Wyrównanie w pionie
ContentVisibility : Visibility Widoczność
IsScaledContent : bool Skaluj zawartość
Orientation : Orientantion Orientacja

ComboBox

Comarch.WPF.Controls.ComboBox

: System.Windows.FrameworkElement,

System.Windows.Controls.Control

 

Właściwość Nazwa
HorizontalContentAllignment : HorizontalAlignment Wyrównanie zawartości w poziomie
PopupBackground : Brush Tło
FocusedBorderBrush : Brush Kolor obramowania (focus)
ErrorColor : Brush Kolor błędu

 

Comarch.POS.Presentation.Core.Controls.ComboBox

: Comarch.WPF.Controls.TextBox

 

Właściwość Nazwa

 

ComboBox2

Comarch.POS.Presentation.Core.Controls.    ComboBox2

 

Właściwość Nazwa
LabelFontSize : double Rozmiar czcionki
LabelFontStyle : FontStyle Styl czcionki
LabelFontWeight : FontWeight Waga czcionki
Shortcut : Shortcut Skrót klawiszowy
FontSize : double Rozmiar czcionki
FontWeight : FontWeight Waga czcionki
FontStyle : FontStyle Styl czcionki
Visibility : Visibility Widoczność

AutoCompleteComboBox

Comarch.POS.Presentation.Core.Controls.AutoCompleteComboBox

: System.Windows.Controls.Control

 

Właściwość Nazwa
FocusedBorderBrush : Brush Kolor obramowania (focus)
ErrorColor : Brush Kolor błędu
HintForeground : Brush Kolor podpowiedzi
Hint: string Podpowiedź

SwitchBox

Comarch.POS.Presentation.Core.Controls.SwitchBox

: System.Windows.Controls.Control

 

Właściwość Nazwa
VerticalContentAlignment : VerticalAlignment Wyrównanie zawartości w pionie
Margin : Thickness Margines

Comarch.POS.Presentation.Core.Controls.SearchBox

 

Właściwość Nazwa
FontSize : double Rozmiar czcionki
Foreground : Brush Tło
HintForeground : Brush Kolor podpowiedzi
Margin: Thickness Margines
Hint: string Podpowiedź

DatePicker

Comarch.POS.Presentation.Core.Controls.DatePicker

: System.Windows.Controls.Control

 

Właściwość Nazwa
FocusedBorderBrush : Brush Kolor obramowania (focus)
ErrorColor : Brush Kolor błędu
BorderBrush : Brush Kolor obramowania
Visibility : Visibility Widoczność

ButtonSpinner

Comarch.POS.Presentation.Core.Controls.ButtonSpinner

 

Właściwość Nazwa
ButtonImageWidth : double Szerokość
ButtonImageHeight : double Wysokość
ButtonWidth : double Szerokość przycisku
ButtonHeight : double Wysokość przycisku

FilterItemsControl

Comarch.POS.Presentation.Core.Controls.FilterItemsControl

 

Właściwość Nazwa
MaxFilterItemsPerRow : int Maks. liczba filtrów
Visibility : Visibility Widoczność
Grid.Position : string Pozycja

SearchBoxFilter

Comarch.POS.Presentation.Core.Controls.SearchBoxFilter

: Comarch.POS.Presentation.Core.Controls.ComboBox2

 

Właściwość Nazwa
DefaultFilter : string Domyślna wartość filtra

StockTile

Comarch.POS.Presentation.Core.Controls.StockTile

 

Właściwość Nazwa
Background : Brush Tło
IsCodeVisible : bool Pokaż kod magazynu
WarehouseMargin : Thickness Margines
WarehouseCodeFontSize : double Rozmiar czcionki kodu
WarehouseNameFontSize : double Rozmiar czcionki nazwy
StocksFontSize : double Rozmiar czcionki
StocksMargin : Thickness Margines

SetValueNumbersKeyboard

Comarch.WPF.Controls.SetValueNumbersKeyboard

 

Właściwość Nazwa
Visibility : Visibility Widoczność

AttributeControl

Comarch.POS.Presentation.Core.Controls.AttributeControl

: System.Windows.Controls.Control

 

Właściwość Nazwa

AssistantControl

Comarch.POS.Presentation.Core.Controls.AssistantControl

 

Właściwość Nazwa
LabelFontSize : double Rozmiar czcionki
LabelFontStyle : FontStyle Styl czcionki
LabelFontWeight : FontWeight Waga czcionki
FontSize : double Rozmiar czcionki
FontWeight : FontWeight Waga czcionki
FontStyle : FontStyle Styl czcionki
Shortcut : Shorcut Skrót klawiszowy
Visibility : Visibility Widoczność
Grid.Position : string Pozycja

DocumentKeypad

Comarch.POS.Presentation.Core.Controls.DocumentKeypad

 

Właściwość Nazwa
HeaderFontSize : double
KeypadHeaderColor : Brush

 

Czy ten artykuł był pomocny?