<Border x:Class="SparkClient.Views.UserControl.Viewport3D"
      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"
      xmlns:local="clr-namespace:SparkClient.Views.UserControl"
      xmlns:hx="http://helix-toolkit.org/wpf/SharpDX"
      xmlns:hc="https://handyorg.github.io/handycontrol"
      mc:Ignorable="d" Loaded="Viewport3D_OnLoaded"
      >
    <!-- Tongg注: 后期如果时间充裕把这个控件单独封装在一个DLL里边,影响MVVM结构-->
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <Grid Grid.Row="0" Height="50">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>
            <Button Grid.Column="0"  Background="Transparent" BorderBrush="Transparent" Height="50" Padding="2"
                    x:Name="BtnFrontView" Click="BtnAngle_OnClick">
                <Image Source="pack://Application:,,,/Resource/Images/UserControl/03-8.png"  Width="40" Height="40"></Image>
            </Button>
            <Button Grid.Column="1"  Background="Transparent" BorderBrush="Transparent" Height="50" Padding="2"
                    x:Name="BtnFrontdView" Click="BtnAngle_OnClick">
                <Image Source="pack://Application:,,,/Resource/Images/UserControl/03-8-1.png"  Width="40" Height="40"></Image>
            </Button>
            <Button Grid.Column="2"  Background="Transparent" BorderBrush="Transparent" Height="50" Padding="2"
                    x:Name="BtnTopView" Click="BtnAngle_OnClick">
                <Image Source="pack://Application:,,,/Resource/Images/UserControl/03-9.png"  Width="40" Height="40"></Image>
            </Button>
            <Button Grid.Column="3"  Background="Transparent" BorderBrush="Transparent" Height="50" Padding="2"
                    x:Name="BtnBottomView" Click="BtnAngle_OnClick">
                <Image Source="pack://Application:,,,/Resource/Images/UserControl/03-10.png"  Width="40" Height="40"></Image>
            </Button>
            
            <Button Grid.Column="4"  Background="Transparent" BorderBrush="Transparent" Height="50" Padding="2"
                    x:Name="BtnFcuntion3View" Click="BtnFunction_OnClick">
                <Image Source="pack://Application:,,,/Resource/Images/UserControl/03-8-2.png"  Width="40" Height="40"></Image>
            </Button>
        </Grid>
        <Border Grid.Row="1"  x:Name="MainBorder">
            <Border.ContextMenu >
                <ContextMenu>
                    <!-- 菜单 -->
                    <MenuItem Header="{StaticResource ViewportRightMenuFront}" x:Name="ViewportRightMenuFront" Click="MenuItem_OnClick"/>
                    <MenuItem Header="{StaticResource ViewportRightMenuSaveViewToPNG}" x:Name="ViewportRightMenuSaveViewToPNG" Click="MenuItem_OnClick"/>
                    <!-- 选择 -->
                    <Separator /> 
                    <MenuItem Header="{StaticResource ViewportRightMenuShowModelFace}" x:Name="ViewportRightMenuShowModelFace" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/>
                    <MenuItem Header="{StaticResource ViewportRightMenuShowModelFaceByType}" x:Name="ViewportRightMenuShowModelFaceByType" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/>
                    <MenuItem Header="{StaticResource ViewportRightMenuShowModelFrame}" x:Name="ViewportRightMenuShowModelFrame" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/>
                    <MenuItem Header="{StaticResource ViewportRightMenuShowLighting}" x:Name="ViewportRightMenuShowLighting" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/>
                    <MenuItem Header="{StaticResource ViewportRightMenuShowDefectFace}" x:Name="ViewportRightMenuShowDefectFace" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/>
                    <MenuItem Header="{StaticResource ViewportRightMenuShowFront}" x:Name="ViewportRightMenuShowFront" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/>
                    <Separator /> 
                    <MenuItem Header="{StaticResource ViewportRightMenuSelectFace}" x:Name="ViewportRightMenuSelectFace" IsCheckable="True"  StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/>
                    <MenuItem Header="{StaticResource ViewportRightMenuSelectFaceFrame}" x:Name="ViewportRightMenuSelectFaceFrame" IsCheckable="True"  StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/>
                    <MenuItem Header="{StaticResource ViewportRightMenuSelectFaceText}" x:Name="ViewportRightMenuSelectFaceText" IsCheckable="True"  StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/>
                    <!-- <MenuItem Header="{StaticResource ViewportRightMenuSelectFaceLengthText}" x:Name="ViewportRightMenuSelectFaceLengthText" IsCheckable="True"  StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/> -->
                    <!-- <MenuItem Header="{StaticResource ViewportRightMenuSelectFaceAngleText}" x:Name="ViewportRightMenuSelectFaceAngleText" IsCheckable="True"  StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/> -->
                    <MenuItem Header="{StaticResource ViewportRightMenuSelectFaceKind}" x:Name="ViewportRightMenuSelectFaceKind" IsCheckable="True" StaysOpenOnClick="True" Checked="MenuItem_OnCheckedChanged" Unchecked="MenuItem_OnCheckedChanged"/>
                </ContextMenu>
            </Border.ContextMenu>
            <hx:Viewport3DX x:Name="Viewport3Dx" ShowCoordinateSystem="True"  
                            PreviewMouseRightButtonUp="UIElement_OnPreviewMouseRightButtonUp" 
                            PreviewMouseRightButtonDown="UIElement_OnPreviewMouseRightButtonDown" 
                            PreviewMouseMove="Viewport3Dx_OnPreviewMouseMove"
                            MouseLeftButtonDown="Viewport3Dx_OnMouseLeftButtonDown">
                <hx:Viewport3DX.EffectsManager><hx:EffectsManager ></hx:EffectsManager></hx:Viewport3DX.EffectsManager>
                <hx:Viewport3DX.InputBindings>
                    <KeyBinding Key="B" Command="hx:ViewportCommands.BackView" />
                    <KeyBinding Key="F" Command="hx:ViewportCommands.FrontView" />
                    <KeyBinding Key="U" Command="hx:ViewportCommands.TopView" />
                    <KeyBinding Key="D" Command="hx:ViewportCommands.BottomView" />
                    <KeyBinding Key="L" Command="hx:ViewportCommands.LeftView" />
                    <KeyBinding Key="R" Command="hx:ViewportCommands.RightView" />
                    <KeyBinding Command="hx:ViewportCommands.ZoomExtents" Gesture="Control+E" />
                    <MouseBinding Command="hx:ViewportCommands.Rotate" Gesture="RightClick" />
                    <MouseBinding Command="hx:ViewportCommands.Zoom" Gesture="MiddleClick" />
                    <MouseBinding Command="hx:ViewportCommands.Pan" Gesture="LeftClick" />
                </hx:Viewport3DX.InputBindings>
            </hx:Viewport3DX>
        </Border>
        <Grid Grid.Row="2" Height="100">
            <Grid Width="100">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="1*"/>
                    <ColumnDefinition Width="2*"/>
                    <ColumnDefinition Width="1*"/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="1*"/>
                    <RowDefinition Height="1*"/>
                    <RowDefinition Height="1*"/>
                </Grid.RowDefinitions>
                
                <Button Grid.Column="1" Grid.Row="0" Padding="0" Background="Transparent" BorderBrush="Transparent" 
                        x:Name="BtnTop" Click="BtnDirection_OnClick">
                    <Image Source="../../Resource/Images/UserControl/03-14-1.png" />
                </Button>
                <Button Grid.Column="0" Grid.Row="1" Padding="0" Background="Transparent" BorderBrush="Transparent" 
                        x:Name="BtnLeft" Click="BtnDirection_OnClick">
                    <Image Source="../../Resource/Images/UserControl/03-14-1.png"  RenderTransformOrigin="0.5,0.5">
                        <Image.RenderTransform >
                            <RotateTransform Angle="-90"  ></RotateTransform>
                        </Image.RenderTransform>
                    </Image>
                </Button>
                <Button Grid.Column="2" Grid.Row="1" Padding="0" Background="Transparent" BorderBrush="Transparent" 
                        x:Name="BtnRight" Click="BtnDirection_OnClick">
                    <Image Source="../../Resource/Images/UserControl/03-14-1.png"  RenderTransformOrigin="0.5,0.5">
                        <Image.RenderTransform >
                            <RotateTransform Angle="90" ></RotateTransform>
                        </Image.RenderTransform>
                    </Image>
                </Button>
                <Button Grid.Column="1" Grid.Row="2" Padding="0" Background="Transparent" BorderBrush="Transparent" 
                        x:Name="BtnBottom" Click="BtnDirection_OnClick">
                    <Image Source="../../Resource/Images/UserControl/03-14-1.png"  RenderTransformOrigin="0.5,0.5">
                        <Image.RenderTransform >
                            <RotateTransform Angle="180" ></RotateTransform>
                        </Image.RenderTransform>
                    </Image>
                </Button>
                
                <!-- <TextBox Grid.Column="1" Grid.Row="2"  Style="{StaticResource TextBoxExtend}"   -->
                <!--          Padding="0" TextAlignment="Center" x:Name="TbCustomizeRevolve" -->
                <!--          MaxLength="3"  -->
                <!--          PreviewTextInput="TbCustomizeRevolve_OnPreviewTextInput" -->
                <!--          PreviewKeyDown="TbCustomizeRevolve_OnPreviewKeyDown" -->
                <!--          TextChanged="TbCustomizeRevolve_OnTextChanged" -->
                <!--           -->
                <!--          /> -->
                <hc:NumericUpDown  Grid.Column="1" Grid.Row="1" Padding="0" HorizontalContentAlignment="Center" Value="10" Maximum="360" MouseDoubleClick="TbCustomizeRevolve_OnMouseDoubleClick"  x:Name="TbCustomizeRevolve"/>   
            </Grid>
        </Grid>
    </Grid>
</Border>