11

使用可能なすべての水平方向のスペースを埋めるアイテム(具体的には、Label、TextBlock、またはTextBox)を作成しようとしています。ToolBarTrayからツールバーを取り出すことで、ToolBar自体を伸ばすことができましたが、アイテムを伸ばす方法がわかりません。

幅をパーセナテージまたはスターの値に設定しようとしましたが、それを受け入れません。さまざまな場所でHorizo​​ntal(Content)AlignmentをStretchに設定しても効果がないようです。

4

5 に答える 5

13

残念ながら、ToolBar のデフォルトの ControlTemplate は 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>

行に複数の項目が必要な場合は、上記の ComboBox の代わりに Grid などを使用できます。

于 2008-11-18T19:08:41.673 に答える
0

StackPanelではなく、グリッドでアイテムをラップしようとしましたか?

于 2008-12-08T08:32:54.443 に答える
0

ツールバーに水平のStackPanelを配置してから、そのStackPanel内に必要な要素を配置してみてください。

于 2008-10-24T03:33:18.500 に答える
0

私はしばらくの間これと同じ問題を抱えていました、そしてオンラインで利用できるヘルプはほとんどありません。

ツールバーのすべての追加機能(折りたたみ可能/移動可能なトレイ)が必要なようには思えないので、トップドックグリッドを使用し、背景を少し調整して標準ツールバーのように見せてみませんか?

于 2008-12-29T20:35:53.597 に答える
0

auto Stretched stack panelのような特別なカスタム パネルが必要で、toolbarpanel を置き換えます。これをチェックしてください。そこに 1 つのパネルがあります http://blendables.com/products/productsLayoutmix.aspx

于 2008-10-24T04:47:26.650 に答える