使用可能なすべての水平方向のスペースを埋めるアイテム(具体的には、Label、TextBlock、またはTextBox)を作成しようとしています。ToolBarTrayからツールバーを取り出すことで、ToolBar自体を伸ばすことができましたが、アイテムを伸ばす方法がわかりません。
幅をパーセナテージまたはスターの値に設定しようとしましたが、それを受け入れません。さまざまな場所でHorizontal(Content)AlignmentをStretchに設定しても効果がないようです。
残念ながら、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 などを使用できます。
StackPanelではなく、グリッドでアイテムをラップしようとしましたか?
ツールバーに水平のStackPanelを配置してから、そのStackPanel内に必要な要素を配置してみてください。
私はしばらくの間これと同じ問題を抱えていました、そしてオンラインで利用できるヘルプはほとんどありません。
ツールバーのすべての追加機能(折りたたみ可能/移動可能なトレイ)が必要なようには思えないので、トップドックグリッドを使用し、背景を少し調整して標準ツールバーのように見せてみませんか?
auto Stretched stack panelのような特別なカスタム パネルが必要で、toolbarpanel を置き換えます。これをチェックしてください。そこに 1 つのパネルがあります http://blendables.com/products/productsLayoutmix.aspx