我正在使用帶有 MVVM 模式的 Dirkster AvalonDock(v4.60.1)。
Avalon Dock 通常將 LayoutUpdateStrategy 設定如下:(在 XAML 中)
<avalonDock:DockingManager.LayoutUpdateStrategy>
<helper:LayoutInitializer/>
</avalonDock:DockingManager.LayoutUpdateStrategy>
但是,我需要通過我的 ViewModel 手動將可錨定視圖更改為 Float/Hide,因此我認為可以完成的方法是在我的 ViewModel 中創建 LayoutInitializer 類并將其系結到 XAML,以便我的 ViewModel 訪問 AvalonDock元素(例如 LayoutRoot、LayoutAnchorable、Container 等)。
如何在 ViewModel 中創建 LayoutInitializer 類并將其系結到<avalonDock:DockingManager.LayoutUpdateStrategy>XAML?
uj5u.com熱心網友回復:
整整一個星期都把頭靠在墻上,我忘了嘗試最簡單的系結方法。
感謝@Lei Yang,提醒我(在評論部分):
由于我可以在ViewModel上創建helper:LayoutInitializer,那么顯然我可以將整個DockingManager.LayoutUpdateStrategy系結到創建的helper:LayoutInitializer類。
而不是撰寫 XAML 代碼來創建該 helper:LayoutInitializer 類:
<avalonDock:DockingManager.LayoutUpdateStrategy>
<helper:LayoutInitializer/>
</avalonDock:DockingManager.LayoutUpdateStrategy>
我可以通過Docking Manager系結它,
<avalonDock:DockingManager x:Name="dockManager"
AnchorablesSource="{Binding TVm}"
DocumentsSource="{Binding CVM}"
ActiveContent="{Binding ActiveDocument, Mode=TwoWay, Converter={StaticResource ActiveDocumentConverter}}"
Background="WhiteSmoke"
LayoutUpdateStrategy="{Binding ADLayoutStrategy}">...
上面的代碼很神奇,你可以看到avalonDock:DockingManager的最后一行。我將LayoutUpdateStrategy系結到 ViewModel 的一個屬性,并且該屬性指向我的helper:LayoutInitializer類。
LayoutInitializer ADLayoutStrategy = new LayoutInitializer();
現在,ViewModel可以訪問 UIElement 并更改檔案/錨定視圖狀態!
我不知道是否還有人仍在使用 AvalonDock,但希望它有所幫助!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/422328.html
標籤:
上一篇:如何在WPFWindowsToastNotification按鈕按下時呼叫函式?
下一篇:在DataGrid中系結資料時,CommandParameter未傳遞給CanExecute(CanExecute引數為空)
