MainWindow.xaml

244 lines | 13.196 kB Blame History Raw Download
<Window x:Class="WPF.View.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
        xmlns:local="clr-namespace:WPF.View"
        xmlns:viewmodel="clr-namespace:WPF.ViewModel"
        xmlns:converters="clr-namespace:WPF.Common.WPF.Converters"
        xmlns:controls="clr-namespace:WPF.Common.WPF.Controls"
        WindowStartupLocation="CenterScreen"
        mc:Ignorable="d"
        x:Name="Window"
        WindowState="{Binding WindowState}"
        Background="{StaticResource WindowBackground}"
        Icon="{StaticResource MainIcon}"
        WindowStyle="None"
        ResizeMode="CanResizeWithGrip"
        AllowsTransparency="True"
        Loaded="Window_Loaded"
        Title="{Binding TitleText}" 
        Height="260" Width="725"
        MinHeight="260" MinWidth="725"
        BorderBrush="#FF494957"
        BorderThickness="1">
    <Window.Resources>
        <Style TargetType="{x:Type ScrollBar}">
            <Setter Property="Template" Value="{StaticResource HorizontalScrollBar}"/>
        </Style>
        <Style TargetType="{x:Type Expander}" BasedOn="{StaticResource AdvancedExpander}"/>
        <Style TargetType="ToolTip">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ToolTip">
                        <Border BorderThickness="1" BorderBrush="Gray" CornerRadius="2" Background="{StaticResource WindowBackground}">
                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

        <Style TargetType="{x:Type xctk:UIntegerUpDown}" BasedOn="{StaticResource {x:Type xctk:UIntegerUpDown}}">
            <Setter Property="FontSize" Value="18"/>
            <Setter Property="Width" Value="50"/>
            <Setter Property="Margin" Value="2"/>
            <Setter Property="Background" Value="{StaticResource WindowBackground}"/>
            <Setter Property="BorderBrush" Value="#FF494957"/>
            <Setter Property="Foreground" Value="White"/>
        </Style>

    </Window.Resources>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <Grid Grid.Row="0" Background="{StaticResource WindowBackground}" x:Name="Header">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"></ColumnDefinition>
                <ColumnDefinition Width="Auto"></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Grid.Column="0" Margin="74,0,0,0">
                <TextBlock Text="{Binding TitleText}"  FontSize="18" Foreground="{StaticResource Yellow}"/>
            </StackPanel>
            <StackPanel Grid.Column="1" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,0,5,0">
                <Button Style="{StaticResource MinimizeButton}" Width="23" Height="23"
                    Command="{Binding MinimizeCommand}" />
                <Button Height="23" Width="23" Style="{StaticResource MaximizeButton}" 
                        Command="{Binding MaximizeCommand}" CommandParameter="{Binding ElementName=Window}" />
                <Button Style="{StaticResource CloseButton}" Width="23" Height="23" 
                    Command="{Binding CloseCommand}"
                    CommandParameter="{Binding ElementName=Window}" HorizontalAlignment="Right"/>
            </StackPanel>
        </Grid>

        <Grid Grid.Row="1" Background="{StaticResource WindowBackground}" Margin="2">

            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="Auto"/>
                <RowDefinition Height="*"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>

            <ComboBox Grid.Row="0" Grid.Column="0" Style="{StaticResource ComboBoxStyle}" ItemsSource="{Binding EnumTheorems}" SelectedItem="{Binding SelectedTheorem}" Width="Auto">
                <ComboBox.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Converter={StaticResource EnumToDescriptionConverter}}" Style="{StaticResource WhiteCaptionTextStyle}"/>
                    </DataTemplate>
                </ComboBox.ItemTemplate>
            </ComboBox>

            <TextBlock Grid.Row="1" Grid.Column="0" Text="{Binding EdgesText}" Margin="2" Style="{StaticResource WhiteCaptionTextStyle}" ToolTipService.InitialShowDelay="1000">
                <TextBlock.ToolTip>
                    <TextBlock Text="{Binding EdgesTextTooltip}" Foreground="GhostWhite" Margin="1"/>
                </TextBlock.ToolTip>
            </TextBlock>
            <xctk:UIntegerUpDown Grid.Row="1" Grid.Column="1" HorizontalAlignment="Left" Value="{Binding EdgesNum}" Minimum="{Binding MinValue}" Maximum="{Binding MaxValue}"/>

            <TextBlock Grid.Row="2" Grid.Column="0" Text="{Binding SameVertText}" Margin="2" Style="{StaticResource WhiteCaptionTextStyle}" ToolTipService.InitialShowDelay="1000">
                <TextBlock.ToolTip>
                    <TextBlock Text="{Binding SameVertTextTooltip}" Foreground="GhostWhite" Margin="1"/>
                </TextBlock.ToolTip>
            </TextBlock>
            <xctk:UIntegerUpDown Grid.Row="2" Grid.Column="1" HorizontalAlignment="Left" Value="{Binding SameVertNum}" Minimum="{Binding MinValue}" Maximum="{Binding MaxValue}"/>

            <Grid Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="4" Visibility="{Binding VisibilityVerticies}">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto"/>
                    <ColumnDefinition Width="54*"/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>

                <TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding VerticiesText}" Margin="2" Style="{StaticResource WhiteCaptionTextStyle}" ToolTipService.InitialShowDelay="1000">
                    <TextBlock.ToolTip>
                        <TextBlock Text="{Binding VerticiesTextTooltip}" Foreground="GhostWhite" Margin="1"/>
                    </TextBlock.ToolTip>
                </TextBlock>

                <TextBlock Grid.Row="1" Grid.Column="0" Text="{Binding VerticiesValueText}" Margin="2" Style="{StaticResource WhiteCaptionTextStyle}" ToolTipService.InitialShowDelay="1000">
                    <TextBlock.ToolTip>
                        <TextBlock Text="{Binding VerticiesValueTooltip}" Foreground="GhostWhite" Margin="1"/>
                    </TextBlock.ToolTip>
                </TextBlock>

                <ScrollViewer Grid.Row="0" Grid.Column="1" Grid.RowSpan="2" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Hidden" MinWidth="540">
                    <ItemsControl ItemsSource="{Binding Verticies}">
                        <ItemsControl.ItemsPanel>
                            <ItemsPanelTemplate>
                                <StackPanel Orientation="Horizontal"/>
                            </ItemsPanelTemplate>
                        </ItemsControl.ItemsPanel>
                        <ItemsControl.ItemTemplate>
                            <DataTemplate>
                                <Grid Margin="0" MaxWidth="54">
                                    <Grid.RowDefinitions>
                                        <RowDefinition Height="Auto"/>
                                        <RowDefinition Height="Auto"/>
                                    </Grid.RowDefinitions>

                                    <TextBlock Grid.Row="0" Text="{Binding VertText}" Margin="2" Style="{StaticResource WhiteCaptionTextStyle}" HorizontalAlignment="Center"/>
                                    <xctk:UIntegerUpDown Grid.Row="1" Value="{Binding Value}" Minimum="{Binding MinValue}" Maximum="{Binding Source={x:Static viewmodel:MainViewModel.MaxValue}}"/>

                                </Grid>
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>
                    </ItemsControl>
                </ScrollViewer>

            </Grid>

            <StackPanel Grid.Row="0" Grid.Column="2" Grid.RowSpan="3" Orientation="Vertical" Width="125" Margin="5,0,5,0">
                <Button Margin="0,0,0,1" Command="{Binding CalculateCommand}">
                    <TextBlock Text="Выполнить расчет" TextWrapping="WrapWithOverflow" TextAlignment="Center"/>
                </Button>

                <Button Margin="0,1,0,0" Command="{Binding SaveResultCommand}">
                    <TextBlock Text="Сохранить перестановки" TextWrapping="WrapWithOverflow" TextAlignment="Center"/>
                </Button>
            </StackPanel>

            <Grid Grid.Row="0" Grid.Column="3" Grid.RowSpan="3">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition MaxWidth="150" Width="Auto"/>
                    <ColumnDefinition Width="Auto"/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>

                <TextBlock Grid.Row="0" Grid.Column="0" Text="{Binding TheoremOKText}" HorizontalAlignment="Left" TextWrapping="WrapWithOverflow" MaxWidth="150" Margin="5,2,2,2" Style="{StaticResource WhiteCaptionTextStyle}" ToolTipService.InitialShowDelay="1000">
                    <TextBlock.ToolTip>
                        <TextBlock Text="{Binding TheoremOKTooltip}" Foreground="GhostWhite" Margin="1"/>
                    </TextBlock.ToolTip>
                </TextBlock>

                <Rectangle Grid.Row="0" Grid.Column="1" Height="24" Width="24" Margin="5 0">
                    <Rectangle.Style>
                        <Style TargetType="Rectangle">
                            <Setter Property="OpacityMask">
                                <Setter.Value>
                                    <VisualBrush Stretch="Fill" Visual="{StaticResource CheckNO}" />
                                </Setter.Value>
                            </Setter>
                            <Setter Property="Fill" Value="Red"/>

                            <Style.Triggers>
                                <DataTrigger Binding="{Binding IsTheoremCorrect}" Value="True">
                                    <Setter Property="OpacityMask">
                                        <Setter.Value>
                                            <VisualBrush Stretch="Fill" Visual="{StaticResource CheckOK}" />
                                        </Setter.Value>
                                    </Setter>
                                    <Setter Property="Fill" Value="Green"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </Rectangle.Style>
                </Rectangle>

                <TextBlock Grid.Row="1" Grid.Column="0" HorizontalAlignment="Left" Text="{Binding AutomorphismText}" TextWrapping="WrapWithOverflow" MaxWidth="150" Margin="5,2,2,2" Style="{StaticResource WhiteCaptionTextStyle}" ToolTipService.InitialShowDelay="1000">
                    <TextBlock.ToolTip>
                        <TextBlock Text="{Binding AutomorphismTooltip}" Foreground="GhostWhite" Margin="1"/>
                    </TextBlock.ToolTip>
                </TextBlock>
                <TextBlock Grid.Row="1" Grid.Column="1" Text="{Binding AutomorphismCount}" Margin="5 0" TextAlignment="Center" FontWeight="Bold" FontSize="18" Foreground="{StaticResource Yellow}"/>

            </Grid>



        </Grid>

        <StackPanel Grid.Row="2" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="{Binding Status, Converter={StaticResource StatusToColorConverter}}" Margin="0,1,0,0">
            <TextBlock Text="{Binding StatusMessage}" FontSize="16" VerticalAlignment="Center" Margin="5 3 0 0" />

            <!--<StackPanel.Style>
                <Style TargetType="StackPanel">
                    <Setter Property="Visibility" Value="Visible"/>
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Status}" Value="{x:Static status:Status.Normal}">
                            <Setter Property="Visibility" Value="Collapsed"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </StackPanel.Style>-->
        </StackPanel>
    </Grid>
</Window>