MainWindow.xaml 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. <Window x:Class="DesktopClock.MainWindow"
  2. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  3. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  6. xmlns:local="clr-namespace:DesktopClock"
  7. xmlns:p="clr-namespace:DesktopClock.Properties"
  8. xmlns:tb="http://www.hardcodet.net/taskbar"
  9. d:DataContext="{d:DesignInstance Type=local:MainWindow}"
  10. mc:Ignorable="d"
  11. Title="DesktopClock"
  12. AllowsTransparency="True"
  13. Background="Transparent"
  14. WindowStyle="None"
  15. ResizeMode="NoResize"
  16. SizeToContent="WidthAndHeight"
  17. UseLayoutRounding="True"
  18. Topmost="{Binding Topmost, Source={x:Static p:Settings.Default}, Mode=TwoWay}"
  19. FontFamily="{Binding FontFamily, Source={x:Static p:Settings.Default}, Mode=OneWay}"
  20. MouseDown="Window_MouseDown"
  21. MouseDoubleClick="Window_MouseDoubleClick"
  22. MouseWheel="Window_MouseWheel"
  23. SourceInitialized="Window_SourceInitialized"
  24. ContentRendered="Window_ContentRendered"
  25. Closing="Window_Closing"
  26. StateChanged="Window_StateChanged">
  27. <Window.Resources>
  28. <ContextMenu x:Key="MainContextMenu" x:Shared="False">
  29. <MenuItem Command="{Binding CopyToClipboardCommand}" Header="_Copy" />
  30. <MenuItem Command="{Binding HideForNowCommand}" Header="_Hide for now" />
  31. <Separator />
  32. <MenuItem Header="Stay on _top"
  33. IsCheckable="True"
  34. IsChecked="{Binding Topmost, Source={x:Static p:Settings.Default}, Mode=TwoWay}" />
  35. <MenuItem Header="Show icon in tas_kbar"
  36. IsCheckable="True"
  37. IsChecked="{Binding ShowInTaskbar, Source={x:Static p:Settings.Default}, Mode=TwoWay}" />
  38. <MenuItem Header="Start with _PC"
  39. IsCheckable="True"
  40. IsChecked="{Binding RunOnStartup, Source={x:Static p:Settings.Default}, Mode=TwoWay}" />
  41. <MenuItem Header="Show _background"
  42. IsCheckable="True"
  43. IsChecked="{Binding BackgroundEnabled, Source={x:Static p:Settings.Default}, Mode=TwoWay}" />
  44. <MenuItem Header="_Drag to move"
  45. IsCheckable="True"
  46. IsChecked="{Binding DragToMove, Source={x:Static p:Settings.Default}, Mode=TwoWay}" />
  47. <MenuItem>
  48. <MenuItem.Header>
  49. <StackPanel Orientation="Horizontal">
  50. <TextBlock Text="Size: " />
  51. <Slider Width="80"
  52. Maximum="{x:Static local:MainWindow.MaxSizeLog}"
  53. Minimum="{x:Static local:MainWindow.MinSizeLog}"
  54. Value="{Binding Height, Converter={local:LogScaleConverter}, Source={x:Static p:Settings.Default}, Mode=TwoWay}" />
  55. </StackPanel>
  56. </MenuItem.Header>
  57. </MenuItem>
  58. <MenuItem Header="The_me" ItemsSource="{x:Static local:Theme.DefaultThemes}">
  59. <MenuItem.Resources>
  60. <Style TargetType="MenuItem">
  61. <Setter Property="Command" Value="{Binding DataContext.SetThemeCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" />
  62. <Setter Property="CommandParameter" Value="{Binding}" />
  63. <Setter Property="DisplayMemberPath" Value="Name" />
  64. </Style>
  65. </MenuItem.Resources>
  66. </MenuItem>
  67. <MenuItem Header="Time _Zone" ItemsSource="{x:Static local:DateTimeUtil.TimeZones}">
  68. <MenuItem.Resources>
  69. <Style TargetType="MenuItem">
  70. <Setter Property="Command" Value="{Binding DataContext.SetTimeZoneCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" />
  71. <Setter Property="CommandParameter" Value="{Binding}" />
  72. </Style>
  73. </MenuItem.Resources>
  74. </MenuItem>
  75. <MenuItem Header="_Format" ItemsSource="{x:Static local:DateFormatExample.DefaultExamples}">
  76. <MenuItem.Resources>
  77. <Style TargetType="MenuItem">
  78. <Style.Triggers>
  79. <DataTrigger Binding="{Binding}" Value="{x:Static local:DateFormatExample.Tutorial}">
  80. <Setter Property="Command" Value="{Binding DataContext.FormatWizardCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" />
  81. <Setter Property="IsEnabled" Value="{x:Static p:Settings.CanBeSaved}" />
  82. </DataTrigger>
  83. </Style.Triggers>
  84. <Setter Property="Command" Value="{Binding DataContext.SetFormatCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" />
  85. <Setter Property="CommandParameter" Value="{Binding Format}" />
  86. <Setter Property="DisplayMemberPath" Value="Example" />
  87. </Style>
  88. </MenuItem.Resources>
  89. </MenuItem>
  90. <Separator />
  91. <MenuItem Command="{Binding NewClockCommand}"
  92. Header="_New clock..."
  93. IsEnabled="{x:Static p:Settings.CanBeSaved}" />
  94. <MenuItem Command="{Binding CountdownWizardCommand}"
  95. Header="_Countdown to..."
  96. IsEnabled="{x:Static p:Settings.CanBeSaved}" />
  97. <MenuItem Command="{Binding OpenSettingsCommand}"
  98. Header="Advanced _settings"
  99. IsEnabled="{x:Static p:Settings.CanBeSaved}" />
  100. <MenuItem Command="{Binding CheckForUpdatesCommand}" Header="Check for _updates" />
  101. <MenuItem Command="{Binding ExitCommand}" Header="E_xit" />
  102. </ContextMenu>
  103. <tb:TaskbarIcon x:Key="TrayIcon"
  104. x:Shared="False"
  105. IconSource="DesktopClock.ico"
  106. ToolTipText="DesktopClock"
  107. MenuActivation="LeftOrRightClick" />
  108. </Window.Resources>
  109. <Viewbox Height="{Binding Height, Source={x:Static p:Settings.Default}, Mode=OneWay}">
  110. <Border CornerRadius="{Binding BackgroundCornerRadius, Source={x:Static p:Settings.Default}, Mode=OneWay}" Padding="1,0,1,0">
  111. <Border.Style>
  112. <Style TargetType="Border">
  113. <Setter Property="Background">
  114. <Setter.Value>
  115. <ImageBrush ImageSource="{Binding BackgroundImagePath, Source={x:Static p:Settings.Default}, Mode=OneWay}" />
  116. </Setter.Value>
  117. </Setter>
  118. <Style.Triggers>
  119. <DataTrigger Binding="{Binding BackgroundEnabled, Source={x:Static p:Settings.Default}, Mode=OneWay}" Value="False">
  120. <DataTrigger.Setters>
  121. <Setter Property="Background" Value="Transparent" />
  122. </DataTrigger.Setters>
  123. </DataTrigger>
  124. <DataTrigger Binding="{Binding BackgroundImagePath, Source={x:Static p:Settings.Default}, Mode=OneWay}" Value="">
  125. <DataTrigger.Setters>
  126. <Setter Property="Background">
  127. <Setter.Value>
  128. <SolidColorBrush Opacity="{Binding BackgroundOpacity, Source={x:Static p:Settings.Default}, Mode=OneWay}" Color="{Binding OuterColor, Source={x:Static p:Settings.Default}, Mode=OneWay}" />
  129. </Setter.Value>
  130. </Setter>
  131. </DataTrigger.Setters>
  132. </DataTrigger>
  133. </Style.Triggers>
  134. </Style>
  135. </Border.Style>
  136. <local:OutlinedTextBlock Text="{Binding CurrentTimeOrCountdownString}"
  137. StrokeThickness="{Binding OutlineThickness, Source={x:Static p:Settings.Default}, Mode=OneWay}"
  138. TextWrapping="Wrap">
  139. <local:OutlinedTextBlock.Fill>
  140. <SolidColorBrush Color="{Binding TextColor, Source={x:Static p:Settings.Default}, Mode=OneWay}" />
  141. </local:OutlinedTextBlock.Fill>
  142. <local:OutlinedTextBlock.Style>
  143. <Style TargetType="local:OutlinedTextBlock">
  144. <Setter Property="Stroke" Value="Transparent" />
  145. <Setter Property="Margin" Value="0" />
  146. <Style.Triggers>
  147. <DataTrigger Binding="{Binding BackgroundEnabled, Source={x:Static p:Settings.Default}, Mode=OneWay}" Value="False">
  148. <DataTrigger.Setters>
  149. <Setter Property="Stroke">
  150. <Setter.Value>
  151. <SolidColorBrush Color="{Binding OuterColor, Source={x:Static p:Settings.Default}, Mode=OneWay}" />
  152. </Setter.Value>
  153. </Setter>
  154. <Setter Property="Margin" Value="{Binding OutlineThickness, Source={x:Static p:Settings.Default}, Mode=OneWay}" />
  155. </DataTrigger.Setters>
  156. </DataTrigger>
  157. </Style.Triggers>
  158. </Style>
  159. </local:OutlinedTextBlock.Style>
  160. </local:OutlinedTextBlock>
  161. </Border>
  162. </Viewbox>
  163. </Window>