最近在研究AvalonDock的一些使用,碰到了一些問題?,F在拿出來跟大家分享分享。
網上找了一大把AvalonDock 1.3版本的資料,弄出Demo后發現屬性面板(DockableContent)設置成浮動后不能??科渌拿姘?。最后只得試試AvalonDock 2.0版本的,還好2.0版本沒讓我們失望。
首先需要庫文件:Xceed.Wpf.AvalonDock,若需要Aero或VS2010主題效果需引用Xceed.Wpf.AvalonDock.Themes.Aero或Xceed.Wpf.AvalonDock.Themes.VS2010,當然還有其它漂亮的主題可以在官網(http://avalondock.codeplex.com/)自行下載.
首先需要在xaml文件頭部引入這些dll(當然在此之前您還得把前面說到的庫文件引入項目):
xmlns:avalonDock="http://schemas.xceed.com/wpf/xaml/avalondock"
xaml布局代碼:
1 <avalonDock:DockingManager Grid.Row="1" x:Name="DManager"> 2 <avalonDock:DockingManager.Theme> 3 <!--<avalonDock:AeroTheme/>--> 4 <avalonDock:VS2010Theme/> 5 <!--<avalonDock:ExpressionDarkTheme/>--> 6 <!--<avalonDock:ExpressionLightTheme/>--> 7 <!--<avalonDock:GenericTheme/>--> 8 <!--<avalonDock:MetroTheme/>--> 9 </avalonDock:DockingManager.Theme> 10 11 <avalonDock:LayoutRoot> 12 <avalonDock:LayoutRoot.LeftSide > 13 <avalonDock:LayoutAnchorSide > 14 <avalonDock:LayoutAnchorGroup> 15 <avalonDock:LayoutAnchorable Title="left1" AutoHideWidth="50" ContentId="left1"> 16 <TextBox Width="80" SelectionChanged="TextBox_SelectionChanged"></TextBox> 17 </avalonDock:LayoutAnchorable> 18 19 <avalonDock:LayoutAnchorable Title="left2" AutoHideWidth="20" ContentId="left2"> 20 <TextBox Width="80"></TextBox> 21 </avalonDock:LayoutAnchorable> 22 23 </avalonDock:LayoutAnchorGroup> 24 </avalonDock:LayoutAnchorSide> 25 </avalonDock:LayoutRoot.LeftSide> 26 27 <avalonDock:LayoutPanel> 28 <avalonDock:LayoutAnchorablePaneGroup DockWidth="100"> 29 <avalonDock:LayoutAnchorablePane> 30 <avalonDock:LayoutAnchorable Title="text1" ContentId="text1"> 31 <TextBox TextWrapping="Wrap" AcceptsReturn="True"></TextBox> 32 </avalonDock:LayoutAnchorable> 33 34 <avalonDock:LayoutAnchorable Title="text2" ContentId="text2"> 35 <TextBox TextWrapping="Wrap" AcceptsReturn="True"></TextBox> 36 </avalonDock:LayoutAnchorable> 37 </avalonDock:LayoutAnchorablePane> 38 </avalonDock:LayoutAnchorablePaneGroup> 39 40 <avalonDock:LayoutDocumentPane> 41 <avalonDock:LayoutDocument Title="document1" ContentId="doc1"> 42 <TextBox AcceptsReturn="True" TextWrapping="Wrap"></TextBox> 43 </avalonDock:LayoutDocument> 44 45 <avalonDock:LayoutAnchorable Title="document2" ContentId="doc1"> 46 <TextBox AcceptsReturn="True" TextWrapping="Wrap"></TextBox> 47 </avalonDock:LayoutAnchorable> 48 </avalonDock:LayoutDocumentPane> 49 </avalonDock:LayoutPanel> 50 </avalonDock:LayoutRoot> 51 52 </avalonDock:DockingManager>
View Code
效果:
<avalonDock:LayoutAnchorablePane>和<avalonDock:LayoutDocumentPane>我分別把它們叫做屬性布局面板和文檔布局面板。屬性布局面板的特性是??吭诿姘宓倪吘墪r可以設置自動隱藏,而且屬性布局面板也可以作為一個可??棵姘骞┢渌膶傩圆季置姘逋??。文檔布局面板只可以漂浮和??吭谥鞑季置姘逯?,不可以??吭趯傩圆季置姘謇锩?。
<avalonDock:LayoutAnchorablePane>和<avalonDock:LayoutDocumentPane>布局面板需要位于<avalonDock:LayoutPanel>布局面板里面,若有需要設置多個屬性布局面板和文檔布局面板置于一個面板組中可以分別使用<avalonDock:LayoutAnchorablePaneGroup>和<avalonDock:LayoutDocumentPaneGroup>。
正在承載我們內容控件的是<avalonDock:LayoutAnchorable>和<avalonDock:LayoutDocument>,我們可以在它們里面添加我們自己的內容。它們只能放在<avalonDock:LayoutAnchorablePane>和<avalonDock:LayoutDocumentPane>里面,看自己的需求可以自己組合使用。
布局就到這里了,接下來讓我們看看如何保存和恢復布局,AvalonDock 2.0提供了相應的操作類XmlLayoutSerializer,需要添加引用using Xceed.Wpf.AvalonDock.Layout.Serialization;
cs代碼:
//保存布局 var serializer = new XmlLayoutSerializer(DManager); using (var stream = new StreamWriter("lay.txt")) serializer.Serialize(stream);
//恢復布局 var serializer = new XmlLayoutSerializer(DManager); using (var stream = new StreamReader("lay.txt")) serializer.Deserialize(stream);
保存布局會把當前的布局(DManager)保存在文件“lay.txt”中,恢復布局會把“lay.txt”中的布局內容恢復到界面(DManager)中。這里有點必須注意,使用這個功能時必須為每個內容面板添加ContentId屬性,如<avalonDock:LayoutAnchorable Title=”left1″ AutoHideWidth=”50″ ContentId=”left1″>,否則將不能恢復。
分享就到這里結束了,其實AvalonDock還有許多其它方面的功能,比如可以使用<avalonDock:DockingManager.AnchorableHeaderTemplate>為屬性內容界面的頭部自定義內容等等,水平有限,內容可能存在紕漏之處還請見諒。
源代碼下載
轉載于:https://www.cnblogs.com/yangxw100/p/3341007.html
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
綏化市是黑龍江省的一個地級市,隸屬于黑龍江省管轄。綏化位于黑龍江省中部,松嫩平原呼蘭河流域。是黑龍江省重要的交通樞紐,省內六大客貨運中轉站之一,哈爾濱北部重要的區域性中心城市,東與森林之都伊春,省會哈爾濱,西與大慶,北與黑河,西北與鶴城齊齊哈爾。綏化市是一個地級市,轄一區三市六縣。綏化是黑龍江省的一個地級市,轄1區3縣級市6縣。綏化主城區人口約48萬。綏化市是黑龍江省的一個地級市,隸屬于黑龍江省。...
為什么ipadmini6不能升級ios16?只不過你你升級時還是沒有推送iPad OS16!依據什么蘋果官網顯示:iPad mini5的情報營機型,全是這個可以你升級iPadOS16這個版本的。僅供參考ipad怎么更新ios15?iPad你升級iOS15,如果能在通用中直接點擊軟件升級就是可以自動你升級了,假如該款設備支持什么iOS15的話,那么系統會自動推趕回設備,接著在設置通用里面點擊怎么升級...
如何學CAD?隨著計算機應用技術的飛速發展,計算機輔助設計已經成為現代工業設計的重要組成部分。AutoCAD軟件具有操作簡單、功能強大的特點。它已被廣泛應用于機械設計、建筑設計、電子等平面設計領域。那么怎樣才能學好AutoCAD繪圖呢?學前準備CAD軟件選擇在正式學習之前,我們要做一步準備,那就是找一個屬于自己的CAD軟件。雖然市面上有很多盜版的CAD,但是還是建議你使用正版的CAD軟件。一方面,...