MainWindow.xaml 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437
  1. <Window x:Class="MatrixXAMLOnly.MainWindow"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  5. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  6. xmlns:local="clr-namespace:MatrixXAMLOnly"
  7. mc:Ignorable="d"
  8. Title="Калькулятор: матрицы" Height="700" Width="1100" Icon="Images\matrix_icon.ico" MinHeight="500" MinWidth="800" x:Name="Window">
  9. <Window.Resources>
  10. <Style TargetType="{x:Type Button}" x:Key="HamburgerBtn">
  11. <Setter Property="Background" Value="Transparent" />
  12. <Setter Property="Foreground" Value="#373737" />
  13. <Setter Property="FontSize" Value="15" />
  14. <Setter Property="SnapsToDevicePixels" Value="True" />
  15. <Setter Property="Template">
  16. <Setter.Value>
  17. <ControlTemplate TargetType="{x:Type Button}">
  18. <Border CornerRadius="1" Background="{TemplateBinding Background}">
  19. <Grid>
  20. <Grid.RowDefinitions>
  21. <RowDefinition Height="2.5*"/>
  22. <RowDefinition Height="1*"/>
  23. <RowDefinition Height="0.8*"/>
  24. <RowDefinition Height="1*"/>
  25. <RowDefinition Height="0.8*"/>
  26. <RowDefinition Height="1*"/>
  27. <RowDefinition Height="2.5*"/>
  28. </Grid.RowDefinitions>
  29. <Grid.ColumnDefinitions>
  30. <ColumnDefinition/>
  31. <ColumnDefinition Width="6*"/>
  32. <ColumnDefinition/>
  33. </Grid.ColumnDefinitions>
  34. <Rectangle Grid.Row="1" Grid.Column="1" Fill="#373737" RadiusX="2" RadiusY="2"/>
  35. <Rectangle Grid.Row="3" Grid.Column="1" Fill="#373737" RadiusX="2" RadiusY="2"/>
  36. <Rectangle Grid.Row="5" Grid.Column="1" Fill="#373737" RadiusX="2" RadiusY="2"/>
  37. </Grid>
  38. </Border>
  39. <ControlTemplate.Triggers>
  40. <Trigger Property="IsMouseOver" Value="True">
  41. <Setter Property="Background" Value="#cccdc6" />
  42. <Setter Property="Foreground" Value="White" />
  43. </Trigger>
  44. <Trigger Property="IsPressed" Value="True">
  45. <Setter Property="Background" Value="#e8e9eb" />
  46. <Setter Property="Foreground" Value="White" />
  47. </Trigger>
  48. </ControlTemplate.Triggers>
  49. </ControlTemplate>
  50. </Setter.Value>
  51. </Setter>
  52. </Style>
  53. <Style TargetType="{x:Type Button}" x:Key="HamburgerMenuItemBtn">
  54. <Setter Property="Background" Value="Transparent"/>
  55. <Setter Property="Foreground" Value="#373737"/>
  56. <Setter Property="FontSize" Value="15"/>
  57. <Setter Property="SnapsToDevicePixels" Value="True"/>
  58. <Setter Property="MinHeight" Value="40"/>
  59. <Setter Property="Cursor" Value="Hand"/>
  60. <Setter Property="Template">
  61. <Setter.Value>
  62. <ControlTemplate TargetType="{x:Type Button}">
  63. <Border BorderThickness="0 0 0 1" BorderBrush="#373737">
  64. <Grid>
  65. <TextBlock x:Name="TextBlockTemplateHamburgerMenuItem" Text="{TemplateBinding Content}" HorizontalAlignment="Center" VerticalAlignment="Center" TextWrapping="Wrap" TextAlignment="Center"/>
  66. </Grid>
  67. </Border>
  68. <ControlTemplate.Triggers>
  69. <Trigger Property="IsMouseOver" Value="True">
  70. <Setter Property="Background" Value="#cccdc6"/>
  71. <Setter Property="Foreground" Value="Black" />
  72. </Trigger>
  73. <Trigger Property="IsPressed" Value="True">
  74. <Setter Property="Background" Value="#e8e9eb" />
  75. <Setter Property="Foreground" Value="White" />
  76. </Trigger>
  77. </ControlTemplate.Triggers>
  78. </ControlTemplate>
  79. </Setter.Value>
  80. </Setter>
  81. </Style>
  82. <Style TargetType="{x:Type TextBlock}" x:Key="OperationSign">
  83. <Setter Property="HorizontalAlignment" Value="Center"/>
  84. <Setter Property="VerticalAlignment" Value="Center"/>
  85. <Setter Property="Foreground" Value="#373737"/>
  86. <Setter Property="FontSize" Value="40"/>
  87. <Setter Property="FontWeight" Value="SemiBold"/>
  88. </Style>
  89. </Window.Resources>
  90. <Grid>
  91. <Grid.RowDefinitions>
  92. <RowDefinition/>
  93. <RowDefinition Height="4*"/>
  94. <RowDefinition/>
  95. </Grid.RowDefinitions>
  96. <!-- CurtainMenu -->
  97. <Grid x:Name="CurtainMenu" Panel.ZIndex="1" Grid.Row="0" Grid.RowSpan="3" Width="0" HorizontalAlignment="Left" Background="#FFE8E9EB" Opacity="0.95">
  98. <StackPanel Margin="0 70 0 0" Orientation="Vertical">
  99. <Button Content="Сложение матрицы" Style="{StaticResource HamburgerMenuItemBtn}"/>
  100. <Button Content="Вычитание матрицы" Style="{StaticResource HamburgerMenuItemBtn}"/>
  101. <Button Content="Умножение матрицы на скаляр" Style="{StaticResource HamburgerMenuItemBtn}"/>
  102. <Button Content="Транспонирование матрицы" Style="{StaticResource HamburgerMenuItemBtn}"/>
  103. <Button Content="Умножение матрицы на её транспонированную матрицу" Style="{StaticResource HamburgerMenuItemBtn}"/>
  104. <Button Content="Перестановка строк" Style="{StaticResource HamburgerMenuItemBtn}"/>
  105. <Button Content="Перестановка строк согласно вектору транспозиции" Style="{StaticResource HamburgerMenuItemBtn}"/>
  106. <Button Content="Обратная матрица" Style="{StaticResource HamburgerMenuItemBtn}"/>
  107. </StackPanel>
  108. </Grid>
  109. <!-- Hamburger Button -->
  110. <Button x:Name="BtnHamburgerMenu" Style="{StaticResource HamburgerBtn}" Panel.ZIndex="1" MinHeight="70" MaxHeight="70" MinWidth="70" MaxWidth="70" Cursor="Hand" Focusable="False" VerticalAlignment="Top" HorizontalAlignment="Left" Click="BtnHamburgerMenu_Click"/>
  111. <!-- Addition -->
  112. <Grid x:Name="GridContentAddition" Grid.RowSpan="3" Visibility="Collapsed">
  113. <Grid.RowDefinitions>
  114. <RowDefinition/>
  115. <RowDefinition Height="4*"/>
  116. <RowDefinition/>
  117. </Grid.RowDefinitions>
  118. <!-- UpperBody -->
  119. <Grid Grid.Row="0">
  120. <Grid.ColumnDefinitions>
  121. <ColumnDefinition Width="0.1*"/>
  122. <ColumnDefinition/>
  123. </Grid.ColumnDefinitions>
  124. </Grid>
  125. <!-- MidlleBody -->
  126. <Grid Grid.Row="1">
  127. <Border Grid.ColumnSpan="3" BorderBrush="Black" BorderThickness="0 1 0 1">
  128. <Grid>
  129. <Grid.ColumnDefinitions>
  130. <ColumnDefinition/>
  131. <ColumnDefinition Width="0.05*"/>
  132. <ColumnDefinition/>
  133. <ColumnDefinition Width="0.05*"/>
  134. <ColumnDefinition/>
  135. </Grid.ColumnDefinitions>
  136. <Grid x:Name="GridAdditionFrstTerm" Grid.Column="0">
  137. </Grid>
  138. <TextBlock Text="+" Grid.Column="1" Style="{StaticResource OperationSign}"/>
  139. <Grid x:Name="GridAdditionScndTerm" Grid.Column="2">
  140. </Grid>
  141. <TextBlock Text="=" Grid.Column="3" Style="{StaticResource OperationSign}"/>
  142. <Grid x:Name="GridAdditionResult" Grid.Column="4">
  143. </Grid>
  144. </Grid>
  145. </Border>
  146. </Grid>
  147. <!-- BottomBody -->
  148. <Grid Grid.Row="2">
  149. </Grid>
  150. </Grid> <!-- Addition -->
  151. <!-- Difference -->
  152. <Grid x:Name="GridContentDifference" Grid.RowSpan="3" Visibility="Collapsed">
  153. <Grid.RowDefinitions>
  154. <RowDefinition/>
  155. <RowDefinition Height="4*"/>
  156. <RowDefinition/>
  157. </Grid.RowDefinitions>
  158. <!-- UpperBody -->
  159. <Grid Grid.Row="0">
  160. <Grid.ColumnDefinitions>
  161. <ColumnDefinition Width="0.1*"/>
  162. <ColumnDefinition/>
  163. </Grid.ColumnDefinitions>
  164. </Grid>
  165. <!-- MidlleBody -->
  166. <Grid Grid.Row="1">
  167. <Border Grid.ColumnSpan="3" BorderBrush="Black" BorderThickness="0 1 0 1">
  168. <Grid>
  169. <Grid.ColumnDefinitions>
  170. <ColumnDefinition/>
  171. <ColumnDefinition Width="0.05*"/>
  172. <ColumnDefinition/>
  173. <ColumnDefinition Width="0.05*"/>
  174. <ColumnDefinition/>
  175. </Grid.ColumnDefinitions>
  176. <Grid x:Name="GridDifferenceFrstTerm" Grid.Column="0">
  177. </Grid>
  178. <TextBlock Text="-" Grid.Column="1" Style="{StaticResource OperationSign}"/>
  179. <Grid x:Name="GridDifferenceScndTerm" Grid.Column="2">
  180. </Grid>
  181. <TextBlock Text="=" Grid.Column="3" Style="{StaticResource OperationSign}"/>
  182. <Grid x:Name="GridDifferenceResult" Grid.Column="4">
  183. </Grid>
  184. </Grid>
  185. </Border>
  186. </Grid>
  187. <!-- BottomBody -->
  188. <Grid Grid.Row="2">
  189. </Grid>
  190. </Grid> <!-- Difference -->
  191. <!-- MultiplicationOnScalar -->
  192. <Grid x:Name="GridContentMultiplication" Grid.RowSpan="3" Visibility="Collapsed">
  193. <Grid.RowDefinitions>
  194. <RowDefinition/>
  195. <RowDefinition Height="4*"/>
  196. <RowDefinition/>
  197. </Grid.RowDefinitions>
  198. <!-- UpperBody -->
  199. <Grid Grid.Row="0">
  200. <Grid.ColumnDefinitions>
  201. <ColumnDefinition Width="0.1*"/>
  202. <ColumnDefinition/>
  203. </Grid.ColumnDefinitions>
  204. </Grid>
  205. <!-- MidlleBody -->
  206. <Grid Grid.Row="1">
  207. <Border Grid.ColumnSpan="3" BorderBrush="Black" BorderThickness="0 1 0 1">
  208. <Grid>
  209. <Grid.ColumnDefinitions>
  210. <ColumnDefinition/>
  211. <ColumnDefinition Width="0.05*"/>
  212. <ColumnDefinition/>
  213. <ColumnDefinition Width="0.05*"/>
  214. <ColumnDefinition/>
  215. </Grid.ColumnDefinitions>
  216. <Grid x:Name="GridMultiplicationOnScalarFrstTerm" Grid.Column="0">
  217. </Grid>
  218. <TextBlock Text="*" Grid.Column="1" Style="{StaticResource OperationSign}" Margin="0 15 0 0"/>
  219. <TextBox x:Name="TextBoxMultiplicationOnScalarScndTerm" Grid.Column="2" Width="100" Height="100" HorizontalAlignment="Center" VerticalAlignment="Center" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="20" FontWeight="SemiBold" MaxLength="8"/>
  220. <TextBlock Text="=" Grid.Column="3" Style="{StaticResource OperationSign}"/>
  221. <Grid x:Name="GridMultiplicationOnScalarResult" Grid.Column="4">
  222. </Grid>
  223. </Grid>
  224. </Border>
  225. </Grid>
  226. <!-- BottomBody -->
  227. <Grid Grid.Row="2">
  228. </Grid>
  229. </Grid> <!-- MultiplicationOnScalar -->
  230. <!-- Transpose -->
  231. <Grid x:Name="GridContentTranspose" Grid.RowSpan="3" Visibility="Collapsed">
  232. <Grid.RowDefinitions>
  233. <RowDefinition/>
  234. <RowDefinition Height="4*"/>
  235. <RowDefinition/>
  236. </Grid.RowDefinitions>
  237. <!-- UpperBody -->
  238. <Grid Grid.Row="0">
  239. <Grid.ColumnDefinitions>
  240. <ColumnDefinition Width="0.1*"/>
  241. <ColumnDefinition/>
  242. </Grid.ColumnDefinitions>
  243. </Grid>
  244. <!-- MidlleBody -->
  245. <Grid Grid.Row="1">
  246. <Border Grid.ColumnSpan="3" BorderBrush="Black" BorderThickness="0 1 0 1">
  247. <Grid>
  248. <Grid.ColumnDefinitions>
  249. <ColumnDefinition/>
  250. <ColumnDefinition Width="0.1*"/>
  251. <ColumnDefinition/>
  252. </Grid.ColumnDefinitions>
  253. <Grid x:Name="GridTransposeFrom" Grid.Column="0">
  254. </Grid>
  255. <TextBlock Text="=>" Grid.Column="1" Style="{StaticResource OperationSign}"/>
  256. <Grid x:Name="GridTransposed" Grid.Column="2">
  257. </Grid>
  258. </Grid>
  259. </Border>
  260. </Grid>
  261. <!-- BottomBody -->
  262. <Grid Grid.Row="2">
  263. </Grid>
  264. </Grid> <!-- Transpose -->
  265. <!-- MultiplicationOnTransposed -->
  266. <Grid x:Name="GridContentMultiplicationOnTransposed" Grid.RowSpan="3" Visibility="Collapsed">
  267. <Grid.RowDefinitions>
  268. <RowDefinition/>
  269. <RowDefinition Height="4*"/>
  270. <RowDefinition/>
  271. </Grid.RowDefinitions>
  272. <!-- UpperBody -->
  273. <Grid Grid.Row="0">
  274. <Grid.ColumnDefinitions>
  275. <ColumnDefinition Width="0.1*"/>
  276. <ColumnDefinition/>
  277. </Grid.ColumnDefinitions>
  278. </Grid>
  279. <!-- MidlleBody -->
  280. <Grid Grid.Row="1">
  281. <Border Grid.ColumnSpan="3" BorderBrush="Black" BorderThickness="0 1 0 1">
  282. <Grid>
  283. <Grid.ColumnDefinitions>
  284. <ColumnDefinition/>
  285. <ColumnDefinition Width="0.1*"/>
  286. <ColumnDefinition/>
  287. </Grid.ColumnDefinitions>
  288. <Grid x:Name="GridMultiplicationOnTransposedTerm" Grid.Column="0">
  289. </Grid>
  290. <TextBlock Text="=>" Grid.Column="1" Style="{StaticResource OperationSign}"/>
  291. <Grid x:Name="GridMultiplicationOnTransposedResult" Grid.Column="2">
  292. </Grid>
  293. </Grid>
  294. </Border>
  295. </Grid>
  296. <!-- BottomBody -->
  297. <Grid Grid.Row="2">
  298. </Grid>
  299. </Grid> <!-- MultiplicationOnTransposed -->
  300. <!-- RowsReplace -->
  301. <Grid x:Name="GridContentRowsReplace" Grid.RowSpan="3" Visibility="Collapsed">
  302. <Grid.RowDefinitions>
  303. <RowDefinition/>
  304. <RowDefinition Height="4*"/>
  305. <RowDefinition/>
  306. </Grid.RowDefinitions>
  307. <!-- UpperBody -->
  308. <Grid Grid.Row="0">
  309. <Grid.ColumnDefinitions>
  310. <ColumnDefinition Width="0.1*"/>
  311. <ColumnDefinition/>
  312. </Grid.ColumnDefinitions>
  313. </Grid>
  314. <!-- MidlleBody -->
  315. <Grid Grid.Row="1">
  316. <Border Grid.ColumnSpan="3" BorderBrush="Black" BorderThickness="0 1 0 1">
  317. <Grid>
  318. <Grid.ColumnDefinitions>
  319. <ColumnDefinition/>
  320. <ColumnDefinition Width="0.4*"/>
  321. <ColumnDefinition/>
  322. </Grid.ColumnDefinitions>
  323. <Grid x:Name="GridRowsReplaceMatrix" Grid.Column="0">
  324. </Grid>
  325. <Grid Grid.Column="1">
  326. <Grid.RowDefinitions>
  327. <RowDefinition/>
  328. <RowDefinition/>
  329. <RowDefinition/>
  330. </Grid.RowDefinitions>
  331. <TextBox x:Name="TextBoxRowReplaceFrstTerm" Grid.Row="0" Width="50" Height="50" HorizontalAlignment="Center" VerticalAlignment="Bottom" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="20" FontWeight="SemiBold" MaxLength="2"/>
  332. <TextBlock Text="=>" Grid.Row="1" Style="{StaticResource OperationSign}"/>
  333. <TextBox x:Name="TextBoxRowReplaceScndTerm" Grid.Row="2" Width="50" Height="50" HorizontalAlignment="Center" VerticalAlignment="Top" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontSize="20" FontWeight="SemiBold" MaxLength="2"/>
  334. </Grid>
  335. <Grid x:Name="GridRowsReplaceResult" Grid.Column="2">
  336. </Grid>
  337. </Grid>
  338. </Border>
  339. </Grid>
  340. <!-- BottomBody -->
  341. <Grid Grid.Row="2">
  342. </Grid>
  343. </Grid> <!-- RowsReplace -->
  344. </Grid>
  345. </Window>