c# - AvalonDock MVVM 锚定位置

标签 c# wpf xaml mvvm avalondock

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

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

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

最佳答案

我认为你无法在 View 模型中控制它。

有两种方法可以控制它。

  1. 无论何时,您都可以从之前保存的(默认)布局恢复布局。 应用程序首次启动或

  2. 您可以根据需要设置 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/

相关文章:

c# - 如何检索应用模板的名称( key )?

c# - OnPlatform 标签在 Xamarin Forms 中不起作用

c# - DataGridTemplateColumn 和绑定(bind)错误? MVVM

c# - p/invoke 操作以执行另一个函数结束

c# - 在 WPF 中绘制样式线条

WPF 4.0 在某些环境中应用程序加载错误

c# - 发生 WPF XAML 解析异常

c# - 重置光标.Clip

c# - 如何在 C# WEB API 中返回 JSON Web Token?

c# - EntityCommand SQL 错误