簡體   English   中英

如何在工具欄中創建項目填充WPF中的所有可用空間

[英]How do I make an item in a toolbar fill all available space in WPF

我正在嘗試在ToolBar上創建一個項目(特別是Label,TextBlock或TextBox),這將填充所有可用的水平空間。 我已經將ToolBar本身從它的ToolBarTray中拉出來了,但是我無法弄清楚如何讓物品拉伸。

我嘗試將Width設置為Percenatage或Star值,但它不接受。 在各個地方設置水平(內容)對齊拉伸似乎也沒有效果。

不幸的是,看起來默認的ControlTemplate for ToolBar不使用ItemsPresenter,它使用ToolBarPanel,因此設置ToolBar.ItemsPanel不會有任何影響。

ToolBarPanel繼承自StackPanel。 默認情況下,其Orientation綁定到父ToolBar.Orientation,但您可以覆蓋它並使用Style將其Orientation設置為Vertical,這將允許項水平拉伸:

<DockPanel>
    <ToolBar DockPanel.Dock="Top">
        <ToolBar.Resources>
            <Style TargetType="{x:Type ToolBarPanel}">
                <Setter Property="Orientation" Value="Vertical"/>
            </Style>
        </ToolBar.Resources>
        <ComboBox HorizontalAlignment="Stretch" SelectedIndex="0">
            <ComboBoxItem>A B C</ComboBoxItem>
            <ComboBoxItem>1 2 3</ComboBoxItem>
            <ComboBoxItem>Do Re Mi</ComboBoxItem>
        </ComboBox>
    </ToolBar>
    <Border Margin="10" BorderBrush="Yellow" BorderThickness="3"/>
</DockPanel>

然后,如果您想在一條線上有多個項目,則可以使用Grid或其他代替上面的ComboBox。

嘗試在ToolBar中放置一個水平StackPanel,然后在StackPanel中放置您想要的元素。

您需要一個特殊的自定義面板,如自動拉伸堆棧面板 ,並替換toolbarpanel。 看看這個,你可以找到一個面板http://blendables.com/products/productsLayoutmix.aspx

您是否嘗試將項目包裝在網格中,而不是在StackPanel中?

我有一段時間遇到同樣的問題,網上提供的幫助很少。

因為它聽起來不像你需要工具欄的所有額外功能(可折疊/可移動托盤),為什么不只是使用頂部停靠網格,並稍微調整背景使其看起來像標准工具欄?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM