diff --git a/src/Resources.props b/src/Resources.props index 419ade94..1205f7e4 100644 --- a/src/Resources.props +++ b/src/Resources.props @@ -22,45 +22,16 @@ ..\..\Reference\System.Windows.Interactivity.dll + WPFDevelopers.ico - - Resources\emoji\发烧.png - - - Resources\emoji\大笑.png - - - Resources\emoji\得意.png - - - Resources\emoji\思考.png - - - Resources\emoji\生病.png - - - Resources\emoji\破涕为笑.png - - - Resources\Assets\Lock.png - - - Resources\Assets\Mail.png + + Resources\emoji\%(Filename)%(Extension) - - Resources\Assets\User.png - - - Resources\Assets\Clear.png - - - Resources\Assets\Background.png - - - Resources\Assets\Logo.png + + Resources\Assets\%(Filename)%(Extension) Resources\Fonts\fixedsys.ttf @@ -71,77 +42,26 @@ Resources\Images\AnimationNavigationBar3D\background.png - - Resources\Images\Breathe\0.jpg - - - Resources\Images\Breathe\1.jpg - - - Resources\Images\Breathe\2.jpg - - - Resources\Images\Chat\Left.jpg - - - Resources\Images\Chat\Right.jpg - - - Resources\Images\Chat\UserImages\jingtao.png - - - Resources\Images\Chat\UserImages\yanjinhua.png - - - Resources\Images\CircularMenu\1.png - - - Resources\Images\CircularMenu\2.png - - - Resources\Images\CircularMenu\3.png - - - Resources\Images\CircularMenu\4.png - - - Resources\Images\CircularMenu\5.png - - - Resources\Images\CircularMenu\6.png - - - Resources\Images\CircularMenu\7.png - - - Resources\Images\CircularMenu\8.png - - - Resources\Images\Craouse\0.jpg - - - Resources\Images\Craouse\1.jpg - - - Resources\Images\Craouse\2.jpg - - - Resources\Images\Craouse\3.jpg + + Resources\Images\Breathe\%(Filename)%(Extension) - - Resources\Images\Craouse\4.jpg + + Resources\Images\Chat\%(Filename)%(Extension) - - Resources\Images\Crop\0.jpg + + Resources\Images\Chat\UserImages\%(Filename)%(Extension) - - Resources\Images\Passwrod\Eye_50px.png + + Resources\Images\CircleMenu\%(Filename)%(Extension) - - Resources\Images\Passwrod\Invisible_50px.png + + Resources\Images\Craouse\%(Filename)%(Extension) - - Resources\Images\Passwrod\Lock_48px.png + + Resources\Images\Crop\0.jpg + + + Resources\Images\Passwrod\%(Filename)%(Extension) Resources\Images\Snow\SnowTree.png diff --git a/src/TargetFrameworks.props b/src/TargetFrameworks.props index 675ca381..797279f4 100644 --- a/src/TargetFrameworks.props +++ b/src/TargetFrameworks.props @@ -2,4 +2,39 @@ net45;net46;net47;net48;net5.0-windows;net6.0-windows;net7.0-windows;net8.0-windows;netcoreapp3.0 + + + 7.0.0 + + + + + 7.0.0 + + + + + 7.0.0 + + + + + 7.0.0 + + + + + 7.0.0 + + + + + 7.0.0 + + + + + 7.0.0 + + \ No newline at end of file diff --git a/src/WPFDevelopers.Net40/Themes/Generic.xaml b/src/WPFDevelopers.Net40/Themes/Generic.xaml index 04a35980..7042df93 100644 --- a/src/WPFDevelopers.Net40/Themes/Generic.xaml +++ b/src/WPFDevelopers.Net40/Themes/Generic.xaml @@ -39,22 +39,142 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + - - + shell:WindowChrome.IsHitTestVisibleInChrome="True" + Orientation="Horizontal"> + - + - + + + + + + + + + diff --git a/src/WPFDevelopers.Net40/Window.cs b/src/WPFDevelopers.Net40/Window.cs index cb792f54..3f6e4189 100644 --- a/src/WPFDevelopers.Net40/Window.cs +++ b/src/WPFDevelopers.Net40/Window.cs @@ -2,16 +2,21 @@ using System; using System.Runtime.InteropServices; using System.Windows; +using System.Windows.Controls; using System.Windows.Input; using System.Windows.Interop; using System.Windows.Media; +using WPFDevelopers.Controls; using WPFDevelopers.Helpers; namespace WPFDevelopers.Net40 { + [TemplatePart(Name = TitleBarIcon, Type = typeof(Button))] public class Window : System.Windows.Window { + private const string TitleBarIcon = "PART_TitleBarIcon"; private WindowStyle _windowStyle; + private Button _titleBarIcon; public static readonly DependencyProperty TitleHeightProperty = DependencyProperty.Register("TitleHeight", typeof(double), typeof(Window), new PropertyMetadata(50d)); @@ -25,6 +30,9 @@ public class Window : System.Windows.Window public static readonly DependencyProperty TitleBackgroundProperty = DependencyProperty.Register("TitleBackground", typeof(Brush), typeof(Window), new PropertyMetadata(null)); + public static readonly DependencyProperty TitleBarModeProperty = + DependencyProperty.Register("TitleBarMode", typeof(TitleBarMode), typeof(Window), new PropertyMetadata(TitleBarMode.Normal)); + static Window() { DefaultStyleKeyProperty.OverrideMetadata(typeof(Window), new FrameworkPropertyMetadata(typeof(Window))); @@ -46,7 +54,20 @@ public override void OnApplyTemplate() { base.OnApplyTemplate(); _windowStyle = WindowStyle; + _titleBarIcon = GetTemplateChild(TitleBarIcon) as Button; + if (_titleBarIcon != null) + { + _titleBarIcon.MouseDoubleClick -= Icon_MouseDoubleClick; + _titleBarIcon.MouseDoubleClick += Icon_MouseDoubleClick; + } + } + + private void Icon_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + if (e.ChangedButton == MouseButton.Left) + Close(); } + public double TitleHeight { get => (double)GetValue(TitleHeightProperty); @@ -71,10 +92,18 @@ public Brush TitleBackground set => SetValue(TitleBackgroundProperty, value); } + public TitleBarMode TitleBarMode + { + get => (TitleBarMode)GetValue(TitleBarModeProperty); + set => SetValue(TitleBarModeProperty, value); + } + private void Window_Loaded(object sender, RoutedEventArgs e) { hWnd = new WindowInteropHelper(this).Handle; HwndSource.FromHwnd(hWnd).AddHook(WindowProc); + if(TitleBarMode == TitleBarMode.Normal) + TitleHeight = SystemParameters2.Current.WindowNonClientFrameThickness.Top; } protected override void OnContentRendered(EventArgs e) diff --git a/src/WPFDevelopers.Net45x/Themes/Generic.xaml b/src/WPFDevelopers.Net45x/Themes/Generic.xaml index b3e008ae..9c1840aa 100644 --- a/src/WPFDevelopers.Net45x/Themes/Generic.xaml +++ b/src/WPFDevelopers.Net45x/Themes/Generic.xaml @@ -45,22 +45,142 @@ - - + + + + + + + + + + + + + + + + + + + + + + + - - + - + - + + Visibility="Collapsed" + WindowChrome.ResizeGripDirection="BottomRight" /> + + + + - + + + + + + diff --git a/src/WPFDevelopers.Net45x/WPFDevelopers.Net45x.csproj b/src/WPFDevelopers.Net45x/WPFDevelopers.Net45x.csproj index f62c243d..9486cadf 100644 --- a/src/WPFDevelopers.Net45x/WPFDevelopers.Net45x.csproj +++ b/src/WPFDevelopers.Net45x/WPFDevelopers.Net45x.csproj @@ -18,39 +18,4 @@ - - - 7.0.0 - - - - - 7.0.0 - - - - - 7.0.0 - - - - - 7.0.0 - - - - - 7.0.0 - - - - - 7.0.0 - - - - - 7.0.0 - - \ No newline at end of file diff --git a/src/WPFDevelopers.Net45x/Window.cs b/src/WPFDevelopers.Net45x/Window.cs index 3e0b7ca4..fc6f039d 100644 --- a/src/WPFDevelopers.Net45x/Window.cs +++ b/src/WPFDevelopers.Net45x/Window.cs @@ -1,16 +1,23 @@ -using System; +using Standard; +using System; +using System.Reflection; using System.Runtime.InteropServices; using System.Windows; +using System.Windows.Controls; using System.Windows.Input; using System.Windows.Interop; using System.Windows.Media; +using WPFDevelopers.Controls; using WPFDevelopers.Helpers; namespace WPFDevelopers.Net45x { + [TemplatePart(Name = TitleBarIcon, Type = typeof(Button))] public class Window : System.Windows.Window { + private const string TitleBarIcon = "PART_TitleBarIcon"; private WindowStyle _windowStyle; + private Button _titleBarIcon; public static readonly DependencyProperty TitleHeightProperty = DependencyProperty.Register("TitleHeight", typeof(double), typeof(Window), new PropertyMetadata(50d)); @@ -24,6 +31,9 @@ public class Window : System.Windows.Window public static readonly DependencyProperty TitleBackgroundProperty = DependencyProperty.Register("TitleBackground", typeof(Brush), typeof(Window), new PropertyMetadata(null)); + public static readonly DependencyProperty TitleBarModeProperty = + DependencyProperty.Register("TitleBarMode", typeof(TitleBarMode), typeof(Window), new PropertyMetadata(TitleBarMode.Normal)); + static Window() { StyleProperty.OverrideMetadata(typeof(Window), @@ -45,28 +55,50 @@ public override void OnApplyTemplate() { base.OnApplyTemplate(); _windowStyle = WindowStyle; + _titleBarIcon = GetTemplateChild(TitleBarIcon) as Button; + if (_titleBarIcon != null) + { + _titleBarIcon.MouseDoubleClick -= Icon_MouseDoubleClick; + _titleBarIcon.MouseDoubleClick += Icon_MouseDoubleClick; + } } + + private void Icon_MouseDoubleClick(object sender, MouseButtonEventArgs e) + { + if (e.ChangedButton == MouseButton.Left) + Close(); + } + public double TitleHeight { get => (double)GetValue(TitleHeightProperty); set => SetValue(TitleHeightProperty, value); } + public bool NoChrome { get => (bool)GetValue(NoChromeProperty); set => SetValue(NoChromeProperty, value); } + public object TitleBar { get => (object)GetValue(TitleBarProperty); set => SetValue(TitleBarProperty, value); } + public Brush TitleBackground { get => (Brush)GetValue(TitleBackgroundProperty); set => SetValue(TitleBackgroundProperty, value); } + public TitleBarMode TitleBarMode + { + get => (TitleBarMode)GetValue(TitleBarModeProperty); + set => SetValue(TitleBarModeProperty, value); + } + private static T GetResourceKey(string key) { if (Application.Current.TryFindResource(key) is T resource) return resource; @@ -78,6 +110,8 @@ private void Window_Loaded(object sender, RoutedEventArgs e) { hWnd = new WindowInteropHelper(this).Handle; HwndSource.FromHwnd(hWnd).AddHook(WindowProc); + if (TitleBarMode == TitleBarMode.Normal) + TitleHeight = SystemParameters.WindowNonClientFrameThickness.Top + SystemParameters.WindowResizeBorderThickness.Top; //32;//SystemParameters.WindowNonClientFrameThickness.Top; } protected override void OnContentRendered(EventArgs e) @@ -171,4 +205,5 @@ private void ShowSystemMenu(object sender, ExecutedRoutedEventArgs e) #endregion } + } \ No newline at end of file diff --git a/src/WPFDevelopers.Samples.Shared/Controls/ChatEmoji/ChatEmoji.cs b/src/WPFDevelopers.Samples.Shared/Controls/ChatEmoji/ChatEmoji.cs index 402a96a6..a1363adb 100644 --- a/src/WPFDevelopers.Samples.Shared/Controls/ChatEmoji/ChatEmoji.cs +++ b/src/WPFDevelopers.Samples.Shared/Controls/ChatEmoji/ChatEmoji.cs @@ -122,7 +122,7 @@ private void UpdateIsRight() rightWrapPanel == null) return; if (!IsRight) { - m_textBlock.Foreground = Brushes.White; + //m_textBlock.Foreground = Brushes.White; leftWrapPanel.Visibility = Visibility.Visible; border.Background = ControlsHelper.Brush; rightWrapPanel.Visibility = Visibility.Collapsed; diff --git a/src/WPFDevelopers.Samples.Shared/ExampleViews/BasicControlsExample.xaml b/src/WPFDevelopers.Samples.Shared/ExampleViews/BasicControlsExample.xaml index f19d30d8..644fae3f 100644 --- a/src/WPFDevelopers.Samples.Shared/ExampleViews/BasicControlsExample.xaml +++ b/src/WPFDevelopers.Samples.Shared/ExampleViews/BasicControlsExample.xaml @@ -71,6 +71,21 @@ Unchecked="LightDark_Checked" /> + + + + + 中文 + English + 한국어 + + - + + + + + + + + @@ -38,6 +76,28 @@ + + + + @@ -85,7 +145,8 @@ + #FF13CE67 + + #99FA68 diff --git a/src/WPFDevelopers.Shared/Themes/CircularMenu.xaml b/src/WPFDevelopers.Shared/Themes/CircleMenu.xaml similarity index 92% rename from src/WPFDevelopers.Shared/Themes/CircularMenu.xaml rename to src/WPFDevelopers.Shared/Themes/CircleMenu.xaml index 33631a28..a85d8065 100644 --- a/src/WPFDevelopers.Shared/Themes/CircularMenu.xaml +++ b/src/WPFDevelopers.Shared/Themes/CircleMenu.xaml @@ -8,12 +8,12 @@ - + + -