如何根据wpf toolbartray的可用空间调整宽度

时间:2011-12-14 09:33:02

标签: c# wpf user-controls controltemplate

我在WPF ToolbarTray控件中使用了大约10-15个控件,现在问题是当我更改分辨率时,其中存在的控件在最大化窗口的情况下不根据我的需要进行调整。有关更多详细信息,请附上以下截图。

最初出现的工具栏托盘控件: Toolbar Tray control appearing originally

工具栏托盘需要显示如下(我正在尝试): Toolbar Tray need to appear like this

任何人都可以告诉我如何自定义或做什么来实现像ToolbarTray这样的第二个图像。感谢任何帮助。

提前致谢,

更新

<ToolBarTray Background="White">
    <ToolBar>

        <Button
        Width="50" Content="hi"/>
        <Button
        Width="100" Content="bye"/>
        <Button
        Content="welcome"/>
        <Button
        Width="20"/>
        <Button Content="Welcome"/>
        <Separator />
        <Button
        ToolBar.OverflowMode="Always" Content="save" />
        <Button
        ToolBar.OverflowMode="Always" Content="open" />
        <Button
        ToolBar.OverflowMode="AsNeeded" Content="bmp" />
    </ToolBar>
    <ToolBar HorizontalAlignment="Right">
        <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
            <Button Content="New Hi1"/>
            <Button Content="New Hi2"/>
            <Button Content="New Hi3"/>
        </StackPanel>
    </ToolBar>
</ToolBarTray>

3 个答案:

答案 0 :(得分:4)

据我所知,开箱即用是不可能的,因为ToolbarTray的布局选项非常有限。

您可以做的是将工具栏包装在DockPanel中进行布局。但是你错过了一些东西,比如通过拖放来改变工具栏的位置。

  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="50"></RowDefinition>
      <RowDefinition Height="*"></RowDefinition>
    </Grid.RowDefinitions>
      <DockPanel Grid.Row="0" Background="White">
        <ToolBar DockPanel.Dock="Left">
         ....
      </ToolBar>
      <ToolBar DockPanel.Dock="Right" HorizontalAlignment="Right" HorizontalContentAlignment="Stretch">
        ...
      </ToolBar>
    </DockPanel>

答案 1 :(得分:1)

我找到了我的问题的解决方案,现在我在ToolBar控件中使用Grid并调整Grid的一列(toolbarGrid)的大小来制作我的第二张Image中的控件。

代码:

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="0"/>
    <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>

<Stackpanel
    Grid.Column ="0">

    <Button Width="50" Content="hi"/>
        <Button Width="100" Content="bye"/>
        <Button Content="welcome"/>
        <Button Width="20"/>
        <Button Content="Welcome"/>
        <Separator />
        <Button ToolBar.OverflowMode="Always" Content="save" />
        <Button ToolBar.OverflowMode="Always" Content="open" />
        <Button ToolBar.OverflowMode="AsNeeded" Content="bmp" />
</StackPanel>

    <ToolBarTray x:Name ="toolBarTray" Grid.Column ="1" HorizontalAlignment ="Right" IsLocked="True">

        <!--First Toolbar for the controls from Print to Zoom Control-->
        <ToolBar x:Name ="topToolBar" FocusVisualStyle="{x:Null}">
            <Grid x:Name="toolbarGrid">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="0"/>
                    <ColumnDefinition Width="Auto"/>
                </Grid.ColumnDefinitions>
                <Button Content="New Hi1"/>
                <Button Content="New Hi2"/>
                <Button Content="New Hi3"/>
            </Grid>
        </ToolBar>
    </ToolBarTray>
</Grid>

答案 2 :(得分:0)

简单的答案不是在你的应用程序的顶部“行”中绘制灰色背景