2016/11/23

同梱スキン - テンキー.xaml


トグルボタンでの2面切り替えサンプル
数字入力の機会があまりないので 使い勝手が良いかどうかはわかりません
キーボードのFnキーのような機能は ボタンを2つ用意して表示非表示を切り替えるのが簡単で作りやすいです



  1. <!-- zeKey skinfile https://ze-key.blogspot.jp/ -->
  2. <z:Keyboard xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  4. xmlns:z="clr-namespace:zeKey.Skin;assembly=zeKey"
  5. Width="320"
  6. Height="400"
  7. z:DragMoveBehavior.CanMove="True"
  8. FontFamily="Yu Gothic UI"
  9. FontWeight="Bold">
  10. <z:Keyboard.SkinInfo>
  11. <z:SkinInfo Title="テンキー(標準電卓風)"
  12. Author="T.Naga"
  13. License="改変自由"
  14. Version="1.0.0">
  15. <z:SkinInfo.Information>
  16. <TextBlock TextWrapping="Wrap">
  17. テンキー+α 標準電卓風な見た目にしてみました<Run Text="&#10;" />
  18. 使い方:<Run Text="&#10;" />
  19. Fnトグルキー押し込みでNumLock+α<Run Text="&#10;" />
  20. 通常状態の右クリックで Fn状態のキーが打てます(見えないので覚える他ないですが)<Run Text="&#10;" />
  21. Fn状態の右クリックに Shift動作や類似キーがついているものがあります<Run Text="&#10;" />
  22. <LineBreak />
  23. 注意:<Run Text="&#10;" />
  24. ・Fnキーは実際にはNumLockキーではありません 他のキーもテンキーではありません
  25. そのため(リアル)キーボードのNumLock状態の影響は受けませんが テンキーを期待しているアプリでは動作しません<Run Text="&#10;" />
  26. <LineBreak />
  27. 詳しい説明は
  28. <z:Hyperlink NavigateUri="https://ze-key.blogspot.jp/">ブログ</z:Hyperlink>
  29. を参照してください
  30. </TextBlock>
  31. </z:SkinInfo.Information>
  32. </z:SkinInfo>
  33. </z:Keyboard.SkinInfo>
  34. <z:Keyboard.Resources>
  35. <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
  36. <SolidColorBrush x:Key="キーボード 背景" Color="#FFF2F2F2" />
  37. <SolidColorBrush x:Key="キーボード 枠" Color="Black" />
  38. <SolidColorBrush x:Key="キーボード 枠IMEオン" Color="Red" />
  39. <SolidColorBrush x:Key="キー 背景" Color="#FFE6E6E6" />
  40. <SolidColorBrush x:Key="キー 押し込み" Color="#FFB8B8B8" />
  41. <SolidColorBrush x:Key="キー マウスオーバー" Color="#FFCFCFCF" />
  42. <SolidColorBrush x:Key="文字" Color="Black" />
  43. <ControlTemplate x:Key="Button">
  44. <Grid>
  45. <Rectangle Fill="{TemplateBinding Background}" />
  46. <Viewbox Stretch="Uniform">
  47. <TextBlock>
  48. <TextBlock.Style>
  49. <Style TargetType="{x:Type TextBlock}">
  50. <Setter Property="Margin" Value="12,8" />
  51. <Setter Property="Foreground" Value="{Binding Foreground, RelativeSource={RelativeSource TemplatedParent}}" />
  52. <Setter Property="Text" Value="{Binding Content, RelativeSource={RelativeSource TemplatedParent}}" />
  53. </Style>
  54. </TextBlock.Style>
  55. </TextBlock>
  56. </Viewbox>
  57. </Grid>
  58. </ControlTemplate>
  59.  
  60. <Style TargetType="{x:Type ButtonBase}">
  61. <Setter Property="Background" Value="{DynamicResource キー 背景}" />
  62. <Setter Property="Template" Value="{StaticResource Button}" />
  63. <Style.Triggers>
  64. <Trigger Property="IsMouseOver" Value="True">
  65. <Setter Property="Background" Value="{DynamicResource キー マウスオーバー}" />
  66. </Trigger>
  67. <Trigger Property="IsPressed" Value="True">
  68. <Setter Property="Background" Value="{DynamicResource キー 押し込み}" />
  69. </Trigger>
  70. <Trigger Property="ToggleButton.IsChecked" Value="True">
  71. <Setter Property="Background" Value="{DynamicResource キー 押し込み}" />
  72. </Trigger>
  73. </Style.Triggers>
  74. </Style>
  75. <Style BasedOn="{StaticResource {x:Type ButtonBase}}" TargetType="{x:Type z:LRRepeatButton}" />
  76. <Style BasedOn="{StaticResource {x:Type ButtonBase}}" TargetType="{x:Type ToggleButton}" />
  77.  
  78. <Style x:Key="CloseButton" TargetType="{x:Type Button}">
  79. <Setter Property="Background" Value="Transparent" />
  80. <Setter Property="Template">
  81. <Setter.Value>
  82. <ControlTemplate>
  83. <Grid>
  84. <Rectangle Fill="{Binding Background, RelativeSource={RelativeSource TemplatedParent}}" />
  85. <Path Width="12"
  86. Height="12"
  87. Data="M0,0 L12,12 M0,12 L12,0"
  88. Stretch="Fill"
  89. Stroke="{Binding Foreground,
  90. RelativeSource={RelativeSource TemplatedParent}}"
  91. StrokeThickness="1" />
  92. </Grid>
  93. </ControlTemplate>
  94. </Setter.Value>
  95. </Setter>
  96. <Style.Triggers>
  97. <Trigger Property="IsMouseOver" Value="True">
  98. <Setter Property="Foreground" Value="White" />
  99. <Setter Property="Background" Value="#FFE81123" />
  100. </Trigger>
  101. </Style.Triggers>
  102. </Style>
  103. </z:Keyboard.Resources>
  104. <Grid>
  105. <Rectangle Fill="{DynamicResource キーボード 背景}" StrokeThickness="1">
  106. <Rectangle.Style>
  107. <Style TargetType="{x:Type Rectangle}">
  108. <Setter Property="Stroke" Value="{DynamicResource キーボード 枠}" />
  109. <Style.Triggers>
  110. <DataTrigger Binding="{Binding ModeKeys.ImeLock}" Value="true">
  111. <Setter Property="Stroke" Value="{DynamicResource キーボード 枠IMEオン}" />
  112. </DataTrigger>
  113. </Style.Triggers>
  114. </Style>
  115. </Rectangle.Style>
  116. </Rectangle>
  117. <Button Width="46"
  118. Height="30"
  119. Margin="1"
  120. HorizontalAlignment="Right"
  121. VerticalAlignment="Top"
  122. Command="{Binding CloseCommand}"
  123. Style="{StaticResource CloseButton}" />
  124. <ToggleButton x:Name="Toggle"
  125. Width="{Binding ActualWidth,
  126. ElementName=SpacerBtn}"
  127. Height="{Binding ActualHeight,
  128. ElementName=SpacerBtn}"
  129. Margin="10,40,0,0"
  130. HorizontalAlignment="Left"
  131. VerticalAlignment="Top"
  132. Content="Fn"
  133. Focusable="False" />
  134. <!-- 表 -->
  135. <Grid Margin="10,40,10,10">
  136. <Grid.Style>
  137. <Style TargetType="{x:Type Grid}">
  138. <Style.Triggers>
  139. <DataTrigger Binding="{Binding IsChecked, ElementName=Toggle}" Value="True">
  140. <Setter Property="Visibility" Value="Hidden" />
  141. </DataTrigger>
  142. </Style.Triggers>
  143. </Style>
  144. </Grid.Style>
  145. <Grid.RowDefinitions>
  146. <RowDefinition />
  147. <RowDefinition />
  148. <RowDefinition />
  149. <RowDefinition />
  150. <RowDefinition />
  151. </Grid.RowDefinitions>
  152. <Grid.ColumnDefinitions>
  153. <ColumnDefinition />
  154. <ColumnDefinition />
  155. <ColumnDefinition />
  156. <ColumnDefinition />
  157. </Grid.ColumnDefinitions>
  158. <ToggleButton Name="SpacerBtn" Visibility="Hidden" />
  159. <z:LRRepeatButton Grid.Column="1"
  160. Content="/"
  161. TypeKey="OemQuestion">
  162. <z:LRRepeatButton.RightTypeKeys>
  163. <z:TypeKeys TypeKey="LeftShift">
  164. <z:TypeKeys TypeKey="D8" />
  165. </z:TypeKeys>
  166. </z:LRRepeatButton.RightTypeKeys>
  167. </z:LRRepeatButton>
  168. <z:LRRepeatButton Grid.Column="2" Content="*">
  169. <z:LRRepeatButton.LeftTypeKeys>
  170. <z:TypeKeys TypeKey="LeftShift">
  171. <z:TypeKeys TypeKey="Oem1" />
  172. </z:TypeKeys>
  173. </z:LRRepeatButton.LeftTypeKeys>
  174. <z:LRRepeatButton.RightTypeKeys>
  175. <z:TypeKeys TypeKey="LeftShift">
  176. <z:TypeKeys TypeKey="D9" />
  177. </z:TypeKeys>
  178. </z:LRRepeatButton.RightTypeKeys>
  179. </z:LRRepeatButton>
  180. <z:LRRepeatButton Grid.Column="3"
  181. Content="⌫"
  182. TypeKey="Backspace">
  183. <z:LRRepeatButton.RightTypeKeys>
  184. <z:TypeKeys TypeKey="Delete" />
  185. </z:LRRepeatButton.RightTypeKeys>
  186. </z:LRRepeatButton>
  187. <z:LRRepeatButton Grid.Row="1"
  188. Content="7"
  189. TypeKey="D7">
  190. <z:LRRepeatButton.RightTypeKeys>
  191. <z:TypeKeys TypeKey="Home" />
  192. </z:LRRepeatButton.RightTypeKeys>
  193. </z:LRRepeatButton>
  194. <z:LRRepeatButton Grid.Row="1"
  195. Grid.Column="1"
  196. Content="8"
  197. TypeKey="D8">
  198. <z:LRRepeatButton.RightTypeKeys>
  199. <z:TypeKeys TypeKey="Up" />
  200. </z:LRRepeatButton.RightTypeKeys>
  201. </z:LRRepeatButton>
  202. <z:LRRepeatButton Grid.Row="1"
  203. Grid.Column="2"
  204. Content="9"
  205. TypeKey="D9">
  206. <z:LRRepeatButton.RightTypeKeys>
  207. <z:TypeKeys TypeKey="PageUp" />
  208. </z:LRRepeatButton.RightTypeKeys>
  209. </z:LRRepeatButton>
  210. <z:LRRepeatButton Grid.Row="1"
  211. Grid.Column="3"
  212. Content="-"
  213. TypeKey="OemMinus">
  214. <z:LRRepeatButton.RightTypeKeys>
  215. <z:TypeKeys TypeKey="Oem5" />
  216. </z:LRRepeatButton.RightTypeKeys>
  217. </z:LRRepeatButton>
  218. <z:LRRepeatButton Grid.Row="2"
  219. Content="4"
  220. TypeKey="D4">
  221. <z:LRRepeatButton.RightTypeKeys>
  222. <z:TypeKeys TypeKey="Left" />
  223. </z:LRRepeatButton.RightTypeKeys>
  224. </z:LRRepeatButton>
  225. <z:LRRepeatButton Grid.Row="2"
  226. Grid.Column="1"
  227. Content="5"
  228. TypeKey="D5" />
  229. <z:LRRepeatButton Grid.Row="2"
  230. Grid.Column="2"
  231. Content="6"
  232. TypeKey="D6">
  233. <z:LRRepeatButton.RightTypeKeys>
  234. <z:TypeKeys TypeKey="Right" />
  235. </z:LRRepeatButton.RightTypeKeys>
  236. </z:LRRepeatButton>
  237. <z:LRRepeatButton Grid.Row="2"
  238. Grid.Column="3"
  239. Content="+">
  240. <z:LRRepeatButton.LeftTypeKeys>
  241. <z:TypeKeys TypeKey="LeftShift">
  242. <z:TypeKeys TypeKey="OemPlus" />
  243. </z:TypeKeys>
  244. </z:LRRepeatButton.LeftTypeKeys>
  245. <z:LRRepeatButton.RightTypeKeys>
  246. <z:TypeKeys TypeKey="LeftShift">
  247. <z:TypeKeys TypeKey="D5" />
  248. </z:TypeKeys>
  249. </z:LRRepeatButton.RightTypeKeys>
  250. </z:LRRepeatButton>
  251. <z:LRRepeatButton Grid.Row="3"
  252. Content="1"
  253. TypeKey="D1">
  254. <z:LRRepeatButton.RightTypeKeys>
  255. <z:TypeKeys TypeKey="End" />
  256. </z:LRRepeatButton.RightTypeKeys>
  257. </z:LRRepeatButton>
  258. <z:LRRepeatButton Grid.Row="3"
  259. Grid.Column="1"
  260. Content="2"
  261. TypeKey="D2">
  262. <z:LRRepeatButton.RightTypeKeys>
  263. <z:TypeKeys TypeKey="Down" />
  264. </z:LRRepeatButton.RightTypeKeys>
  265. </z:LRRepeatButton>
  266. <z:LRRepeatButton Grid.Row="3"
  267. Grid.Column="2"
  268. Content="3"
  269. TypeKey="D3">
  270. <z:LRRepeatButton.RightTypeKeys>
  271. <z:TypeKeys TypeKey="pageDown" />
  272. </z:LRRepeatButton.RightTypeKeys>
  273. </z:LRRepeatButton>
  274. <z:LRRepeatButton Grid.Row="3"
  275. Grid.RowSpan="2"
  276. Grid.Column="3"
  277. Content="⏎"
  278. TypeKey="Return">
  279. <z:LRRepeatButton.RightTypeKeys>
  280. <z:TypeKeys TypeKey="LeftShift">
  281. <z:TypeKeys TypeKey="OemMinus" />
  282. </z:TypeKeys>
  283. </z:LRRepeatButton.RightTypeKeys>
  284. </z:LRRepeatButton>
  285. <z:LRRepeatButton Grid.Row="4"
  286. Grid.ColumnSpan="2"
  287. Content="0"
  288. TypeKey="D0">
  289. <z:LRRepeatButton.RightTypeKeys>
  290. <z:TypeKeys TypeKey="Space" />
  291. </z:LRRepeatButton.RightTypeKeys>
  292. </z:LRRepeatButton>
  293. <z:LRRepeatButton Grid.Row="4"
  294. Grid.Column="2"
  295. Content="."
  296. TypeKey="OemPeriod">
  297. <z:LRRepeatButton.RightTypeKeys>
  298. <z:TypeKeys TypeKey="OemComma" />
  299. </z:LRRepeatButton.RightTypeKeys>
  300. </z:LRRepeatButton>
  301. </Grid>
  302. <!-- 裏 -->
  303. <Grid Margin="10,40,10,10" Visibility="{Binding IsChecked, Converter={StaticResource BooleanToVisibilityConverter}, ElementName=Toggle}">
  304. <Grid.RowDefinitions>
  305. <RowDefinition />
  306. <RowDefinition />
  307. <RowDefinition />
  308. <RowDefinition />
  309. <RowDefinition />
  310. </Grid.RowDefinitions>
  311. <Grid.ColumnDefinitions>
  312. <ColumnDefinition />
  313. <ColumnDefinition />
  314. <ColumnDefinition />
  315. <ColumnDefinition />
  316. </Grid.ColumnDefinitions>
  317. <z:LRRepeatButton Grid.Column="1" Content="(">
  318. <z:LRRepeatButton.LeftTypeKeys>
  319. <z:TypeKeys TypeKey="LeftShift">
  320. <z:TypeKeys TypeKey="D8" />
  321. </z:TypeKeys>
  322. </z:LRRepeatButton.LeftTypeKeys>
  323. <z:LRRepeatButton.RightTypeKeys>
  324. <z:TypeKeys TypeKey="OemOpenBrackets" />
  325. </z:LRRepeatButton.RightTypeKeys>
  326. </z:LRRepeatButton>
  327. <z:LRRepeatButton Grid.Column="2" Content=")">
  328. <z:LRRepeatButton.LeftTypeKeys>
  329. <z:TypeKeys TypeKey="LeftShift">
  330. <z:TypeKeys TypeKey="D9" />
  331. </z:TypeKeys>
  332. </z:LRRepeatButton.LeftTypeKeys>
  333. <z:LRRepeatButton.RightTypeKeys>
  334. <z:TypeKeys TypeKey="OemCloseBrackets" />
  335. </z:LRRepeatButton.RightTypeKeys>
  336. </z:LRRepeatButton>
  337. <z:LRRepeatButton Grid.Column="3"
  338. Content="⌦"
  339. TypeKey="Delete">
  340. <z:LRRepeatButton.RightTypeKeys>
  341. <z:TypeKeys TypeKey="Backspace" />
  342. </z:LRRepeatButton.RightTypeKeys>
  343. </z:LRRepeatButton>
  344. <z:LRRepeatButton Grid.Row="1"
  345. Content="↖"
  346. TypeKey="Home" />
  347. <z:LRRepeatButton Grid.Row="1"
  348. Grid.Column="1"
  349. Content="↑"
  350. TypeKey="Up" />
  351. <z:LRRepeatButton Grid.Row="1"
  352. Grid.Column="2"
  353. Content="⇞"
  354. TypeKey="PageUp">
  355. <z:LRRepeatButton.RightTypeKeys>
  356. <z:TypeKeys TypeKey="LeftShift">
  357. <z:TypeKeys TypeKey="PageUp" />
  358. </z:TypeKeys>
  359. </z:LRRepeatButton.RightTypeKeys>
  360. </z:LRRepeatButton>
  361. <z:LRRepeatButton Grid.Row="1"
  362. Grid.Column="3"
  363. Content="\">
  364. <z:LRRepeatButton.LeftTypeKeys>
  365. <z:TypeKeys TypeKey="Oem5" />
  366. </z:LRRepeatButton.LeftTypeKeys>
  367. </z:LRRepeatButton>
  368. <z:LRRepeatButton Grid.Row="2"
  369. Content="←"
  370. TypeKey="Left" />
  371. <z:LRRepeatButton Grid.Row="2"
  372. Grid.Column="2"
  373. Content="→"
  374. TypeKey="Right" />
  375. <z:LRRepeatButton Grid.Row="2"
  376. Grid.Column="3"
  377. Content="%">
  378. <z:LRRepeatButton.LeftTypeKeys>
  379. <z:TypeKeys TypeKey="LeftShift">
  380. <z:TypeKeys TypeKey="D5" />
  381. </z:TypeKeys>
  382. </z:LRRepeatButton.LeftTypeKeys>
  383. </z:LRRepeatButton>
  384. <z:LRRepeatButton Grid.Row="3"
  385. Content="↘"
  386. TypeKey="End" />
  387. <z:LRRepeatButton Grid.Row="3"
  388. Grid.Column="1"
  389. Content="↓"
  390. TypeKey="Down" />
  391. <z:LRRepeatButton Grid.Row="3"
  392. Grid.Column="2"
  393. Content="⇟"
  394. TypeKey="PageDown" />
  395. <z:LRRepeatButton Grid.Row="3"
  396. Grid.RowSpan="2"
  397. Grid.Column="3"
  398. Content="=">
  399. <z:LRRepeatButton.LeftTypeKeys>
  400. <z:TypeKeys TypeKey="LeftShift">
  401. <z:TypeKeys TypeKey="OemMinus" />
  402. </z:TypeKeys>
  403. </z:LRRepeatButton.LeftTypeKeys>
  404. </z:LRRepeatButton>
  405. <z:LRRepeatButton Grid.Row="4"
  406. Grid.ColumnSpan="2"
  407. Content="␣">
  408. <z:LRRepeatButton.LeftTypeKeys>
  409. <z:TypeKeys TypeKey="Space" />
  410. </z:LRRepeatButton.LeftTypeKeys>
  411. </z:LRRepeatButton>
  412. <z:LRRepeatButton Grid.Row="4"
  413. Grid.Column="2"
  414. Content=",">
  415. <z:LRRepeatButton.LeftTypeKeys>
  416. <z:TypeKeys TypeKey="OemComma" />
  417. </z:LRRepeatButton.LeftTypeKeys>
  418. </z:LRRepeatButton>
  419. </Grid>
  420. <z:ResizeGrip>
  421. <z:ResizeGrip.Style>
  422. <Style TargetType="{x:Type z:ResizeGrip}">
  423. <Setter Property="Template">
  424. <Setter.Value>
  425. <ControlTemplate>
  426. <Grid Background="#01FFFFFF">
  427. <Canvas Width="10"
  428. Height="10"
  429. Margin="4">
  430. <Path Data="M 0,8L 2,8L 2,10L 0,10L 0,8 Z M 8,0L 10,0L 10,2L 8,2L 8,0 Z M 8,4L 10,4L 10,6L 8,6L 8,4 Z M 8,8L 10,8L 10,10L 8,10L 8,8 Z M 4,8L 6,8L 6,10L 4,10L 4,8 Z M 4,4L 6,4L 6,6L 4,6L 4,4 Z " Fill="#FFBFBFBF" />
  431. </Canvas>
  432. </Grid>
  433. </ControlTemplate>
  434. </Setter.Value>
  435. </Setter>
  436. </Style>
  437. </z:ResizeGrip.Style>
  438. </z:ResizeGrip>
  439. </Grid>
  440. </z:Keyboard>

0 件のコメント :

コメントを投稿