1

我正在使用 AvalonDock 在 WPF 中构建一个应用程序,部分原因是我认为它会很有用,但主要是为了自学一些 WPF 并习惯于一般的编程风格。我已经将应用程序的主要“工具箱”构建为可停靠窗格,以便可以移动、拉出或自动隐藏它,以便用户可以充分利用他们的屏幕空间,在其中,我正在使用一个 StackPanel 来排列各种按钮。

当工具箱停靠在左侧或右侧时,是否有一种(相对简单的)方法可以使 StackPanel 垂直定向,但在停靠在顶部或底部时水平定向?我确信必须有某种方法将方向绑定到某个东西而不是直接设置它,但我似乎找不到任何有用的东西来绑定它。

4

1 回答 1

3

像这样的东西怎么样:

您的 StackPanel 应如下所示:

<StackPanel Orientation="{Binding DockableStyle, 
                         RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Avalon:DockableContent}},
                         Converter={StaticResource MyConverter}">
  <!-- StackPanel content here -->
</StackPanel>

Myconverter具有以下Convert方法:

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
  DockableStyle style = value as DockableStyle
  if (style == DockableStyle.TopBorder || style == DockableStyle.BottomBorder)
  {
     return Orientation.Horizontal;
  }
  else
  {
     return Orientation.Vertical;
  }
}

我认为这应该为你做所有的魔法

于 2012-06-11T13:58:56.157 回答