0
增加avalondock窗口標題欄上的按鈕是否可以完成?也沒有找到任何資源。我已經添加了正常WPF窗口標題欄上的按鈕,但是avalondock沒有添加按鈕的選項。我有需要有這樣AvalonDock控件上的增加按鈕
標題欄上的幫助按鈕,一箇舊的應用程序增加avalondock窗口標題欄上的按鈕是否可以完成?也沒有找到任何資源。我已經添加了正常WPF窗口標題欄上的按鈕,但是avalondock沒有添加按鈕的選項。我有需要有這樣AvalonDock控件上的增加按鈕
標題欄上的幫助按鈕,一箇舊的應用程序讓我們假設你有DockablePane
<ad:DockingManager>
<ad:DockablePane x:Name="myAwesomePane">
<ad:DockableContent >
... SomeContent ...
</ad:DockableContent>
</ad:DockablePane>
</ad:DockingManager>
那麼你的窗口已經被加載後,你可以找到DockPanel
你窗格可視化樹並添加按鈕。
private void MainWindow_OnLoaded(object sender, RoutedEventArgs e)
{
var dockPanel = FindChild<DockPanel>(myAwesomePane);
if (dockPanel != null)
{
var button = new Button {Content = "Help", Margin = new Thickness(1), Width = 40};
button.Click += (o, args) => MessageBox.Show(this, "HELP");
DockPanel.SetDock(button, Dock.Right);
dockPanel.Children.Insert(dockPanel.Children.Count - 1, button);
}
}
/// <summary>
/// Find first child of given type
/// </summary>
public static T FindChild<T>(DependencyObject parent) where T : DependencyObject
{
var childrenCount = VisualTreeHelper.GetChildrenCount(parent);
T result = null;
for (int i = 0; i < childrenCount; i++)
{
var dObj = VisualTreeHelper.GetChild(parent, i);
result = dObj as T;
if (result != null)
{
break;
}
result = FindChild<T>(dObj);
if (result != null)
{
break;
}
}
return result;
}
但也有一些侷限性,所以我沒有看就爲解決方案:面板停靠到另一個地方
你必須這樣做對後
按鈕消失所有的窗格手動
得到異常Xceed。 Wpf.AvalonDock.Layout.LayoutAnchorable'不是Visual或Visual3D – murmansk
您使用的是什麼版本的Avalon Dock?我爲你的屏幕截圖寫了1.3的例子。 – Mitya
@murmansk'LayoutAnchorable'是從版本2.0 – Mitya