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の例を書いた。 <:LayoutAnchorablePane avalonDock> avalonDock: –
Mitya
@murmansk 'LayoutAnchorable'は、それが、バージョン2.0 – Mitya