Sviluppo TradingBot
This commit is contained in:
@@ -0,0 +1,199 @@
|
||||
<UserControl x:Class="DesktopBot.Views.OrdersView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
mc:Ignorable="d">
|
||||
<UserControl.Resources>
|
||||
<Style x:Key="ColH" TargetType="TextBlock">
|
||||
<Setter Property="Foreground" Value="{StaticResource TextSecondaryBrush}"/>
|
||||
<Setter Property="FontFamily" Value="Segoe UI"/>
|
||||
<Setter Property="FontSize" Value="11"/>
|
||||
<Setter Property="FontWeight" Value="SemiBold"/>
|
||||
<Setter Property="Padding" Value="8,8"/>
|
||||
</Style>
|
||||
<Style x:Key="Cell" TargetType="TextBlock">
|
||||
<Setter Property="Foreground" Value="{StaticResource TextPrimaryBrush}"/>
|
||||
<Setter Property="FontFamily" Value="Segoe UI"/>
|
||||
<Setter Property="FontSize" Value="12"/>
|
||||
<Setter Property="Padding" Value="8,6"/>
|
||||
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||
</Style>
|
||||
</UserControl.Resources>
|
||||
<Grid Background="{StaticResource BackgroundDarkBrush}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<!-- Header -->
|
||||
<Grid Grid.Row="0" Margin="24,20,24,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"/>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Column="0" Text="Ordini" Style="{StaticResource SectionTitle}" Margin="0"/>
|
||||
<StackPanel Grid.Column="1" Orientation="Horizontal">
|
||||
<TextBlock Text="Caricamento..." Foreground="{StaticResource TextSecondaryBrush}"
|
||||
FontFamily="Segoe UI" FontSize="12" VerticalAlignment="Center" Margin="0,0,12,0"
|
||||
Visibility="{Binding IsLoading, Converter={StaticResource BoolToVisConverter}}"/>
|
||||
<Button Content="↻ Aggiorna" Command="{Binding RefreshCommand}"
|
||||
Style="{StaticResource OutlineButton}" Padding="14,7"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
<TextBlock Grid.Row="1" Margin="24,8,24,0"
|
||||
Text="{Binding Orders.Count, StringFormat='Ordini totali: {0}'}"
|
||||
Style="{StaticResource LabelSecondary}"/>
|
||||
<!-- Errore -->
|
||||
<Border Grid.Row="2" Margin="24,10,24,0"
|
||||
Background="#2A1515" BorderBrush="{StaticResource AccentRedBrush}"
|
||||
BorderThickness="1" CornerRadius="6" Padding="14,8"
|
||||
Visibility="{Binding HasError, Converter={StaticResource BoolToVisConverter}}">
|
||||
<TextBlock Text="{Binding ErrorMessage}" Foreground="{StaticResource AccentRedBrush}"
|
||||
FontFamily="Segoe UI" FontSize="12"/>
|
||||
</Border>
|
||||
<!-- Header colonne -->
|
||||
<Grid Grid.Row="3" Margin="24,14,24,0" Background="{StaticResource BackgroundPanelBrush}">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="90"/>
|
||||
<ColumnDefinition Width="90"/>
|
||||
<ColumnDefinition Width="65"/>
|
||||
<ColumnDefinition Width="75"/>
|
||||
<ColumnDefinition Width="75"/>
|
||||
<ColumnDefinition Width="100"/>
|
||||
<ColumnDefinition Width="100"/>
|
||||
<ColumnDefinition Width="90"/>
|
||||
<ColumnDefinition Width="145"/>
|
||||
<ColumnDefinition Width="145"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Column="0" Text="Asset" Style="{StaticResource ColH}"/>
|
||||
<TextBlock Grid.Column="1" Text="Tipo" Style="{StaticResource ColH}"/>
|
||||
<TextBlock Grid.Column="2" Text="Side" Style="{StaticResource ColH}"/>
|
||||
<TextBlock Grid.Column="3" Text="Qty" Style="{StaticResource ColH}" HorizontalAlignment="Right"/>
|
||||
<TextBlock Grid.Column="4" Text="Filled" Style="{StaticResource ColH}" HorizontalAlignment="Right"/>
|
||||
<TextBlock Grid.Column="5" Text="Avg Fill" Style="{StaticResource ColH}" HorizontalAlignment="Right"/>
|
||||
<TextBlock Grid.Column="6" Text="Limit" Style="{StaticResource ColH}" HorizontalAlignment="Right"/>
|
||||
<TextBlock Grid.Column="7" Text="Stato" Style="{StaticResource ColH}"/>
|
||||
<TextBlock Grid.Column="8" Text="Inviato" Style="{StaticResource ColH}"/>
|
||||
<TextBlock Grid.Column="9" Text="Eseguito" Style="{StaticResource ColH}"/>
|
||||
<TextBlock Grid.Column="10" Text="" Style="{StaticResource ColH}"/>
|
||||
</Grid>
|
||||
<!-- Righe ordini -->
|
||||
<ScrollViewer Grid.Row="4" Margin="24,0,24,20" VerticalScrollBarVisibility="Auto">
|
||||
<ItemsControl ItemsSource="{Binding Orders}">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate>
|
||||
<Border BorderBrush="{StaticResource BorderBrush}" BorderThickness="0,0,0,1">
|
||||
<Border.Style>
|
||||
<Style TargetType="Border">
|
||||
<Setter Property="Background" Value="Transparent"/>
|
||||
<Style.Triggers>
|
||||
<Trigger Property="IsMouseOver" Value="True">
|
||||
<Setter Property="Background" Value="#1A1A2E"/>
|
||||
</Trigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Border.Style>
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="90"/>
|
||||
<ColumnDefinition Width="90"/>
|
||||
<ColumnDefinition Width="65"/>
|
||||
<ColumnDefinition Width="75"/>
|
||||
<ColumnDefinition Width="75"/>
|
||||
<ColumnDefinition Width="100"/>
|
||||
<ColumnDefinition Width="100"/>
|
||||
<ColumnDefinition Width="90"/>
|
||||
<ColumnDefinition Width="145"/>
|
||||
<ColumnDefinition Width="145"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Column="0" Text="{Binding Symbol}"
|
||||
FontWeight="Bold" FontFamily="Segoe UI" FontSize="13"
|
||||
Foreground="{StaticResource TextPrimaryBrush}" Padding="8,5"/>
|
||||
<TextBlock Grid.Column="1" Text="{Binding OrderType}" Style="{StaticResource Cell}"
|
||||
Foreground="{StaticResource TextSecondaryBrush}"/>
|
||||
<Border Grid.Column="2" CornerRadius="3" Margin="4,7" Padding="6,2"
|
||||
Background="{Binding SideBadgeColor}" VerticalAlignment="Center">
|
||||
<TextBlock Text="{Binding Side}" FontFamily="Segoe UI" FontSize="10" FontWeight="Bold"
|
||||
HorizontalAlignment="Center">
|
||||
<TextBlock.Style>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="Foreground" Value="{StaticResource AccentRedBrush}"/>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding Side}" Value="BUY">
|
||||
<Setter Property="Foreground" Value="{StaticResource AccentGreenBrush}"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</TextBlock.Style>
|
||||
</TextBlock>
|
||||
</Border>
|
||||
<TextBlock Grid.Column="3" Text="{Binding Qty}" Style="{StaticResource Cell}" HorizontalAlignment="Right"/>
|
||||
<TextBlock Grid.Column="4" Text="{Binding FilledQty}" Style="{StaticResource Cell}" HorizontalAlignment="Right" Foreground="{StaticResource TextSecondaryBrush}"/>
|
||||
<TextBlock Grid.Column="5" Text="{Binding AvgFillPrice}" Style="{StaticResource Cell}" HorizontalAlignment="Right"/>
|
||||
<TextBlock Grid.Column="6" Text="{Binding LimitPrice}" Style="{StaticResource Cell}" HorizontalAlignment="Right" Foreground="{StaticResource TextSecondaryBrush}"/>
|
||||
<!-- Badge stato -->
|
||||
<Border Grid.Column="7" CornerRadius="3" Margin="4,7" Padding="6,2" VerticalAlignment="Center">
|
||||
<Border.Style>
|
||||
<Style TargetType="Border">
|
||||
<Setter Property="Background" Value="#2A2A3A"/>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsOpen}" Value="True">
|
||||
<Setter Property="Background" Value="#1A2A3A"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</Border.Style>
|
||||
<TextBlock Text="{Binding Status}" FontFamily="Segoe UI" FontSize="10" FontWeight="SemiBold"
|
||||
HorizontalAlignment="Center">
|
||||
<TextBlock.Style>
|
||||
<Style TargetType="TextBlock">
|
||||
<Setter Property="Foreground" Value="{StaticResource TextSecondaryBrush}"/>
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding IsOpen}" Value="True">
|
||||
<Setter Property="Foreground" Value="#5BB8FF"/>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</TextBlock.Style>
|
||||
</TextBlock>
|
||||
</Border>
|
||||
<TextBlock Grid.Column="8" Text="{Binding SubmittedAt}" Style="{StaticResource Cell}"
|
||||
Foreground="{StaticResource TextSecondaryBrush}" FontFamily="Segoe UI Mono" FontSize="11"/>
|
||||
<TextBlock Grid.Column="9" Text="{Binding FilledAt}" Style="{StaticResource Cell}"
|
||||
Foreground="{StaticResource TextSecondaryBrush}" FontFamily="Segoe UI Mono" FontSize="11"/>
|
||||
<Button Grid.Column="10" Content="Cancella"
|
||||
Command="{Binding DataContext.CancelOrderCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}"
|
||||
CommandParameter="{Binding OrderId}"
|
||||
Style="{StaticResource DangerButton}" Padding="8,4" Margin="4"
|
||||
Visibility="{Binding IsOpen, Converter={StaticResource BoolToVisConverter}}"/>
|
||||
</Grid>
|
||||
</Border>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
<ItemsControl.Style>
|
||||
<Style TargetType="ItemsControl">
|
||||
<Style.Triggers>
|
||||
<DataTrigger Binding="{Binding Orders.Count}" Value="0">
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate>
|
||||
<TextBlock Text="Nessun ordine trovato."
|
||||
Foreground="{StaticResource TextSecondaryBrush}"
|
||||
FontFamily="Segoe UI" FontSize="13"
|
||||
HorizontalAlignment="Center" Margin="0,50"/>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</DataTrigger>
|
||||
</Style.Triggers>
|
||||
</Style>
|
||||
</ItemsControl.Style>
|
||||
</ItemsControl>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
Reference in New Issue
Block a user