Skip to content

3. Controls

Clément Sepulchre edited this page Dec 31, 2023 · 32 revisions

Layout

Card

image

<GlassCard></GlassCard>

Desktop Page

<Window 
  ...
  Classes="NakedWindow" 
  xmlns:suki="clr-namespace:SukiUI.Controls;assembly=SukiUI"
>

 <suki:DesktopPage
        Title="Suki UI Testing - New Project"
        LogoColor="#2f54eb"
        LogoKind="Xaml"
        MenuVisibility="True"
        Name="myPage">
        <suki:DesktopPage.MenuItems>
            <MenuItem Header="File">
                <MenuItem Header="File" />
                <MenuItem Header="Edit" />
                <MenuItem Header="Help" />
            </MenuItem>
            <MenuItem Header="Edit" />
            <MenuItem Header="Help" />
        </suki:DesktopPage.MenuItems>
    
    <Grid> Content </Grid>
    </suki:DesktopPage>
</Window>

<Window 
  ...
  Classes="NakedWindow" 
  xmlns:suki="clr-namespace:SukiUI.Controls;assembly=SukiUI"
>

<suki:DesktopPage
        Title="Suki UI Testing - New Project"
        LogoColor="#2f54eb"
        LogoKind="Xaml"
        MenuVisibility="False"
        IsMaximizeButtonEnabled="False"
        IsMinimizeButtonEnabled="False"
        Name="myPage">

	<Grid> Content </Grid>
</suki:DesktopPage>
</Window>

  • Minimize and maximize buttons can be enabled in XAML by setting IsMinimizeButtonEnabled and IsMaximizeButtonEnabled properties to True. Default is False.

Tabs

image

<TabControl>
    <TabItem Header="Red Tab">
         <Grid Background="#44ff0000" />
    </TabItem>
     <TabItem Header="Green Tab">
         <Grid Background="#4400ff00" />
     </TabItem>
      <TabItem Header="Blue Tab">
          <Grid Background="#440000ff" />
      </TabItem>
</TabControl>
 

SettingsLayout

   <suki:SettingsLayout>
          <suki:SettingsLayout.Items>
                 <objectModel:ObservableCollection x:TypeArguments="suki:SettingsLayoutItem">
                         <suki:SettingsLayoutItem Header="Settings Part1">
                               <suki:SettingsLayoutItem.Content>
                                     <Border Background="LightGray" Height="300" />
                               </suki:SettingsLayoutItem.Content>
                        </suki:SettingsLayoutItem>
                        <suki:SettingsLayoutItem Header="Settings Part 2">
                               <suki:SettingsLayoutItem.Content>
                                     <Border Background="LightGray" Height="300" />
                               </suki:SettingsLayoutItem.Content>
                        </suki:SettingsLayoutItem>
                 <suki:SettingsLayoutItem Header="Settings Part 3">
                       <suki:SettingsLayoutItem.Content>
                            <Border Background="LightGray" Height="300" />
                       </suki:SettingsLayoutItem.Content>
                 </suki:SettingsLayoutItem>
           </objectModel:ObservableCollection>
      </suki:SettingsLayout.Items>
 </suki:SettingsLayout>
 

Button - Inputs

Switch (ToggleButton)

Peek 31-12-2023 14-06

 <ToggleButton Classes="Switch" />

Buttons

image

<Button Classes="Primary" Content="Primary" />
<Button Classes="Primary Rounded" Content="Rounded" />
<Button Classes="Accent" Content="Accent" />
<Button Content="Neutral" />
<Button Classes="Outlined" Content="Outlined" />

Slider

image

<Slider IsSnapToTickEnabled="True" Maximum="100" Minimum="0" TickFrequency="1" Value="50"></Slider>

TextBox

image

 <TextBox Text="This is Text"></TextBox>
 <TextBox Text="Delete Enabled" theme:TextBoxExtensions.AddDeleteButton="True"></TextBox>
 <TextBox Watermark="Watermark"></TextBox>
 <TextBox theme:TextBoxExtensions.Prefix="http" Watermark="avaloniaui.com"></TextBox>

ComboBox

combobox

 <ComboBox PlaceholderText="Select a Color">
    <ComboBoxItem>
       <TextBlock>Red</TextBlock>
    </ComboBoxItem>
    <ComboBoxItem>
       <TextBlock>Green</TextBlock>
    </ComboBoxItem>
    <ComboBoxItem>
       <TextBlock>Blue</TextBlock>
    </ComboBoxItem>
</ComboBox>

NumericUpDown

image

<NumericUpDown></NumericUpDown>

RadioButton

image

<StackPanel Orientation="Vertical">
          <RadioButton Margin="5">Item 1</RadioButton>
          <RadioButton Margin="5">Item 2</RadioButton>
          <RadioButton Margin="5">Item 3</RadioButton>
</StackPanel>

image


          <RadioButton Classes="GigaChips" >
              ...
          </RadioButton>
         

DatePicker

<DatePicker />

Progress

WaveProgress

xmlns:suki="clr-namespace:SukiUI.Controls;assembly=SukiUI"
...

<suki:WaveProgress Value="50" IsTextVisible="True" />

Stepper

xmlns:suki="clr-namespace:SukiUI.Controls;assembly=SukiUI"
...

<suki:Stepper Name="myStep" />
this.FindControl<Stepper>("myStep").Steps = new List<string>() { "one", "two", "thre", "four", "five" };
this.FindControl<Stepper>("myStep").Index = 2;

CircleProgressBar

xmlns:suki="clr-namespace:SukiUI.Controls;assembly=SukiUI"
...

<suki:CircleProgressBar Height="130" StrokeWidth="11" Value="20" Width="130">
             <TextBlock Classes="h3">20</TextBlock>
</suki:CircleProgressBar>

Loading

xmlns:suki="clr-namespace:SukiUI.Controls;assembly=SukiUI"
...

<suki:Loading></suki:Loading>

ProgressBar

<ProgressBar  Value="60" />

Data Presentation

PropertyGrid

xmlns:suki="clr-namespace:SukiUI.Controls;assembly=SukiUI"
...

<suki:PropertyGrid Name="propertyGrid" />

...

this.FindControl<PropertyGrid>("propertyGrid").Item = new Person()
{
    Name = "Billy",
    Partner = new Person()
    {
         Name = "Charles"
    }
};

DataGrid

<DataGrid Name="myDataGrid" AutoGenerateColumns="True" IsReadOnly="True" />
this.FindControl<DataGrid>("myDataGrid").Items = new List<Person>();

ListBox

 <ListBox>
      <TextBlock>item 1</TextBlock>
      <TextBlock>item 2</TextBlock>
      <TextBlock>item 3</TextBlock>
 </ListBox>

TreeView

<TreeView>
      <TreeViewItem Header="blub">
          <TreeViewItem Header="blub" />
          <TreeViewItem Header="blub" />
      </TreeViewItem>
      <TreeViewItem Header="blub" />
      <TreeViewItem Header="blub" />
</TreeView>

GroupBox

xmlns:suki="clr-namespace:SukiUI.Controls;assembly=SukiUI"
...

<suki:GroupBox Header="Test Header">
   <Grid Height="100" Width="150">
         <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center">Test Content</TextBlock>
   </Grid>
</suki:GroupBox>

Interactivity

Notification

 WindowNotificationManager notificationManager;

public MainWindow()
{
    InitializeComponent();
    notificationManager = new WindowNotificationManager(this); 
}

private void ShowNotification(object sender, RoutedEventArgs e)
{
    var notif = new Avalonia.Controls.Notifications.Notification("title","message");
    notificationManager.Show(notif);
}

BusyArea

<suki:BusyArea IsBusy="False">
    <!-- Content -->
</suki:BusyArea>

Expander

<Expander Header="Click To Expand">
          <TextBlock>Expanded</TextBlock>
</Expander>

MessageBox

 SukiUI.MessageBox.MessageBox.Info(this, "Title", "This is an information message that need to be read.");

Others

Card and Hoverable

<Border Classes="Card"></Border>
<Border Classes="Card Hoverable"></Border>

TextBlock

<StackPanel>
     <TextBlock Classes="h1">h1</TextBlock>
     <TextBlock Classes="h2">h2</TextBlock>
     <TextBlock Classes="h3">h3</TextBlock>
     <TextBlock Classes="h4">h4</TextBlock>
     <TextBlock>Normal</TextBlock>
     <TextBlock Classes="Accent">Accent</TextBlock>
</StackPanel>

ContextMenu

<Border.ContextMenu>
     <ContextMenu>
           <MenuItem Header="Menu item 1" />
           <MenuItem Header="Menu item 2" />
           <Separator />
           <MenuItem Header="Menu item 3" />
     </ContextMenu>
</Border.ContextMenu>
Clone this wiki locally