![](/img/trans.png)
[英]How to bind Style property for LayoutAnchorableItem in XAML file with AvalonDock?
[英]How to create AvalonDock LayoutInitializer in ViewModel and bind it to the XAML code?
我正在使用带有 MVVM 模式的 Dirkster AvalonDock(v4.60.1)。
Avalon Dock 通常将 LayoutUpdateStrategy 设置如下:(在 XAML 中)
<avalonDock:DockingManager.LayoutUpdateStrategy>
<helper:LayoutInitializer/>
</avalonDock:DockingManager.LayoutUpdateStrategy>
但是,我需要通过我的 ViewModel 手动将可锚定视图更改为 Float/Hide,因此我认为可以完成的方法是在我的 ViewModel 中创建 LayoutInitializer class 并将其绑定到 XAML 以便我的 ViewModel 访问 AvalonDock元素(例如 LayoutRoot、LayoutAnchorable、Container 等)。
如何在我的 ViewModel 中创建 LayoutInitializer class 并将其绑定到 XAML 中的<avalonDock:DockingManager.LayoutUpdateStrategy>
?
整整一个星期都把头靠在墙上,我忘了尝试最简单的绑定方法。
感谢@Lei Yang,提醒我(在评论部分):
由于我可以在ViewModel上创建helper:LayoutInitializer ,那么显然我可以将整个DockingManager.LayoutUpdateStrategy绑定到创建的helper:LayoutInitializer class。
而不是编写 XAML 代码来创建该助手:LayoutInitializer class:
<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 的属性,并且该属性指向我的助手:LayoutInitializer class。
LayoutInitializer ADLayoutStrategy = new LayoutInitializer();
现在, ViewModel可以访问 UIElement 并更改文档/锚定视图状态!
我不知道是否还有人仍在使用 AvalonDock,但希望它有所帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.