我正在使用AvalonDock在WPF中构建一个应用程序,部分原因是我觉得它很有用,但主要是为了自学一些WPF并且习惯于一般的编程风格。我已经将应用程序的主要“工具箱”构建为可停靠窗格,以便可以移动,拉出或自动隐藏,以便用户可以充分利用其屏幕空间,并且在其中,我正在使用一个StackPanel来安排各种按钮。
当工具箱停靠在左侧或右侧时,是否有(相对简单的)方法让StackPanel垂直定向,而当停靠在顶部或底部时,是否水平定位?我确信必须有某种方法将方向绑定到某个东西而不是直接设置它,但我似乎找不到任何有用的东西来绑定它。
答案 0 :(得分: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;
}
}
我认为这应该为你做所有的魔力