日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

WPF中使用WindowChrome自定义窗口中遇到的最大化问题

發布時間:2023/12/18 asp.net 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WPF中使用WindowChrome自定义窗口中遇到的最大化问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

FrameWork 4.5 之后,內置了WindowChrome類,官方文檔:

https://msdn.microsoft.com/en-us/library/system.windows.shell.windowchrome.aspx

如果你是舊版本,可以去搜索單獨的dll。

上方的頁面,解釋和例子也都是舊版本的,如果新版本,比如和我一樣,是4.6.2,可以繼續往下看新的用法,相比文檔中的舊方式,新的用法的確更簡單有效了。

問題:shell:SystemParameters2.Current 在新的版本中不知道在哪里找。

回答:

xmlns:shell="clr-namespace:System.Windows.Shell;assembly=PresentationFramework"

shell:SystemParameters2 已經移除,相關的類似操作,可以在shell:SystemParameters中找到。

以下是Window的樣式:無標題欄,無圖標,無功能按鈕,當然也沒拖動。

1 <Style x:Key="ShellNoneStyleWindow" 2 TargetType="Window"> 3 <Setter Property="AllowsTransparency" Value="True" /> 4 <Setter Property="WindowStyle" Value="None" /> 5 <Setter Property="Background" Value="Transparent" /> 6 <Setter Property="ResizeMode" Value="NoResize" /> 7 <Setter Property="TextOptions.TextFormattingMode" Value="Display" /> 8 <Setter Property="shell:WindowChrome.WindowChrome"> 9 <Setter.Value> 10 <shell:WindowChrome CaptionHeight="0" 11 GlassFrameThickness="0" 12 NonClientFrameEdges="None" 13 ResizeBorderThickness="0" 14 UseAeroCaptionButtons="False" /> 15 </Setter.Value> 16 </Setter> 17 <Setter Property="Template"> 18 <Setter.Value> 19 <ControlTemplate TargetType="Window"> 20 <AdornerDecorator Grid.Row="1" 21 KeyboardNavigation.IsTabStop="False"> 22 <Border x:Name="Content_Panel"> 23 <ContentPresenter x:Name="MainContentPresenter" 24 KeyboardNavigation.TabNavigation="Cycle" /> 25 </Border> 26 </AdornerDecorator> 27 <ControlTemplate.Triggers> 28 <Trigger Property="WindowState" Value="Maximized"> 29 <Setter TargetName="Content_Panel" Property="Margin"> 30 <Setter.Value> 31 <Binding> 32 <Binding.Converter> 33 <cvt:SystemWorkAreaToMarginConverter /> 34 </Binding.Converter> 35 </Binding> 36 </Setter.Value> 37 </Setter> 38 </Trigger> 39 </ControlTemplate.Triggers> 40 </ControlTemplate> 41 </Setter.Value> 42 </Setter> 43 </Style>

?以下是關鍵的?cvt:SystemWorkAreaToMarginConverter

1 /// <summary> 2 /// 讀取系統主顯示器,和窗體可用工作區,獲得WPF可用的外邊距。 3 /// </summary> 4 public class SystemWorkAreaToMarginConverter : IValueConverter 5 { 6 public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 7 { 8 return new Thickness( 9 SystemParameters.WorkArea.Left 10 , SystemParameters.WorkArea.Top 11 , SystemParameters.PrimaryScreenWidth - SystemParameters.WorkArea.Width 12 , SystemParameters.PrimaryScreenHeight - SystemParameters.WorkArea.Height 13 ); 14 } 15 16 public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 17 { 18 throw new NotImplementedException(); 19 } 20 }

思路就是整個屏幕裁掉任務欄部分,可供“最大化窗體”使用的部分了,所得到的外邊距便是任務欄的那部分區域。

?

轉載于:https://www.cnblogs.com/3Tai/p/9209988.html

總結

以上是生活随笔為你收集整理的WPF中使用WindowChrome自定义窗口中遇到的最大化问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。