Last modified on 25 August 2016, at 10:49

XAML

Revision as of 10:49, 25 August 2016 by JKN (Talk | contribs) (Advanced)

The WinX User Interface can be vastly customized using XAML.

Templates

The UI is controlled by several predefined XAML templates which are loaded into the App at startup. There is a set of default template deployed with the App at installation, however, each of them can be overridden by placing the respective file in the folder [AppInstallPath\LocalState\XAML

General

  • UBIKThemes.xaml

Controls the overall styling and behavior of the App, like standard Brushes (Colors) and Fonts.

AuthenticationPage

  • UBIKSplashArea.xaml
  • UBIKPageNavigation.xaml

Content Pages

  • UBIKObjectIcon.xaml
  • UBIKObjectIconSmall.xaml


RootPage

  • UBIKMainLeftArea.xaml
  • UBIKMainItem.xaml
  • UBIKMainItemSmall.xaml

ChildPage

  • UBIKChildItem.xaml
  • UBIKChildItemSmall.xaml
  • UBIKChildAction.xaml
  • UBIKPriorityPropertyItem.xaml

DetailsPage

  • UBIKDocumentItem.xaml
  • UBIKDocumentItemSmall.xaml



Specific UBIK® Elements

Converters

Basic

  • BooleanToVisibilityConverter

Converts a Boolean into a Visibility, where true will result in Visibility.Visible.

  • BooleanToCollapsedConverter

Converts a Boolean into a Visibility, where true will result in Visibility.Collapsed.

Advanced

Returns a formatted string where placeholders will be filled with values supplied to its parameter properties (Param0, Param1, Param2).

Example:

        <StackPanel Orientation="Horizontal">
            <StackPanel.Resources>
                <!--  Instantiate the converter and bind the the Param0 to a SearchBox on this page  -->
                <converters:StringFormatConverter x:Key="URIConverter" Param0="{Binding ElementName=SkypeQuery, Path=QueryText}" />
            </StackPanel.Resources>
            <!--  Create a SearchBox that calls the typed Name via Skype on enter  -->
            <SearchBox
               x:Name="SkypeQuery"
               Width="240" Height="40"
               FontSize="18"
               PlaceholderText="Call Skype">
                <Interactivity:Interaction.Behaviors>
                    <Core:EventTriggerBehavior EventName="QuerySubmitted">
                        <Core:InvokeCommandAction
                             Command="{Binding NavigateToURICommand}"
                             CommandParameter="{Binding ElementName=EcoQuery, Path=QueryText, Converter={StaticResource URIConverter},
                             ConverterParameter=skype:\{0\}\?call }" />

                    </Core:EventTriggerBehavior>
                </Interactivity:Interaction.Behaviors>
            </SearchBox>
        </StackPanel>

Evaluates a C# expression with 3 optional variables (Param0, Param1, Param2) and returns the result.

Example:

            <Grid>
                <Grid.Resources>
                    <!--  Instantiate the converter and bind the Context to the current DataContext, the Param0 to a UI element of this page  -->
                    <converters:EvalExpressionConverter x:Key="CodeConverter" Context="{Binding}" Param0="{Binding ElementName=ChildListView, Path=Name}" />
                </Grid.Resources>
                <StackPanel Orientation="Horizontal">
                    <!--  Create a TextBox where we can enter a C# expression  -->
                    <TextBox
                       x:Name="CodeQuery"
                       MinWidth="240" Height="40"
                       Margin="0,10,10,0" HorizontalAlignment="Right"
                       VerticalAlignment="Top"
                       FontSize="18"
                       PlaceholderText="Expression">
                    </TextBox>
                    <!--  Create a TextBlock where we display the result of the compiled expression -->
                    <TextBlock Text="{Binding ElementName=CodeQuery, Path=Text, Converter={StaticResource CodeConverter}}" />
                </StackPanel>
            </Grid>


Behaviors

Commands