gpt4 book ai didi

c# - AvalonDock MVVM 锚定位置

转载 作者:行者123 更新时间:2023-12-03 10:42:05 24 4
gpt4 key购买 nike

我的 MVVM WPF 应用程序中有一个 AvalonDock(版本 3.5)。绑定(bind)如下:

    <xcad:DockingManager Name="_dockingManager" Grid.Row="1" 
DataContext="{Binding DockingManagerViewModel}"
DocumentsSource="{Binding Documents}"
AnchorablesSource="{Binding Anchorables}" >

因此,当我在 View 模型中将新的 Anchorable 添加到相应的“Anchorables”集合时,相应的 View 就会显示出来。尽管如此, View 总是显示在我的应用程序的右侧。如何通过 View 模型控制 View 停靠在应用程序的左侧?

最佳答案

我不认为你可以在你的 View 模型中控制它。

有两种方法可以控制它。

  • 您可以从以前保存的(默认)布局恢复布局,只要
    第一次启动应用程序或
  • 您可以根据需要设置 XAML 以使用初始布局(首选解决方案)

  • 对于第二个选项:
    您可以在 DockingManager 中使用 XAML 绑定(bind)。类来实现您的要求:

    TestApp完整实现以下代码段的示例(只需将 LeftSide 更改为 BottomSide 即可查看效果):
    <avalonDock:DockingManager Grid.Row="1">
    ...
    <avalonDock:LayoutRoot.LeftSide>
    <avalonDock:LayoutAnchorSide>
    <avalonDock:LayoutAnchorGroup>
    <avalonDock:LayoutAnchorable Title="AutoHide1 Content" ContentId="AutoHide1Content" IconSource="/AvalonDock.TestApp;component/Images/address-book--pencil.png" >
    <TextBox Text="{Binding TestTimer, Mode=OneWay, StringFormat='AutoHide Attached to Timer ->\{0\}'}"/>
    </avalonDock:LayoutAnchorable>
    <avalonDock:LayoutAnchorable Title="AutoHide2 Content" ContentId="AutoHide2Content">
    <StackPanel Orientation="Vertical">
    <TextBox/>
    <TextBox/>
    </StackPanel>
    </avalonDock:LayoutAnchorable>
    </avalonDock:LayoutAnchorGroup>
    </avalonDock:LayoutAnchorSide>
    </avalonDock:LayoutRoot.LeftSide>
    </avalonDock:LayoutRoot>
    </avalonDock:DockingManager>

    关于c# - AvalonDock MVVM 锚定位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56041717/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com