1. ホーム
  2. wpf

[解決済み] WPF ToolBar: グリップとオーバーフローを取り除く方法

2022-12-22 01:04:30

質問

ネストされた WPF ToolBarPanel-ToolBar-Menu において、左側のグリップハンドルと右側のオーバーフローエリアを取り除きたいのですが、両方ともグレーアウトされています。

それを達成する方法について何か考えがありますか?

私の用語が完全に正しいわけではありませんが、下のリンクの図3の画像を見ると、3つのツールバーのうち一番下のドロップダウンの左側にグリップがあり、一番右のボタンの右側にオーバーフローがあるのです。

ツールバーの画像

どのように解決するのですか?

グリップを外すには、付属のプロパティ ToolBarTray.IsLocked="True" を設定することで取り外すことができます。

を削除するには オーバーフロー トグルボタン を削除するには、sixlettervariables が提案するように、カスタム ControlTemplate でそれを削除する必要があります。

ToolBarのloadedイベントでボタンを隠すこともできますが、どの方法をとるにせよ、attachedプロパティを設定する必要があります。 ToolBar.OverflowMode="Never" を設定する必要があります。そうすれば、アイテムが到達不可能な領域に誤ってオーバーフローすることはありません。

<ToolBarPanel DockPanel.Dock="Top">
    <ToolBar ToolBarTray.IsLocked="True" Loaded="ToolBar_Loaded">
        <Menu ToolBar.OverflowMode="Never">
            <MenuItem Header="File" />
            <MenuItem Header="New" />
        </Menu>
    </ToolBar>
</ToolBarPanel>

そして、Overflow ToggleButtonをcollapsedに設定します。

private void ToolBar_Loaded(object sender, RoutedEventArgs e)
{
    ToolBar toolBar = sender as ToolBar;
    var overflowGrid = toolBar.Template.FindName("OverflowGrid", toolBar) as FrameworkElement;
    if (overflowGrid != null)
    {
        overflowGrid.Visibility = Visibility.Collapsed;
    }
    var mainPanelBorder = toolBar.Template.FindName("MainPanelBorder", toolBar) as FrameworkElement;
    if (mainPanelBorder != null)
    {
        mainPanelBorder.Margin = new Thickness();
    }
}