Как да регулирате ширината според наличното пространство за wpf toolbartray

Използвам около 10-15 контроли в контрола на WPF ToolbarTray. Сега проблемът е, че докато променям разделителната способност, наличните в нея контроли не се настройват според нуждите ми в случай на увеличен прозорец. За повече подробности прикачих екранната снимка по-долу.

Контролът на лентата с инструменти се появява първоначално: Контролата на лентата с инструменти се появява първоначално

Тавата на лентата с инструменти трябва да изглежда така (което се опитвам): Тавата на лентата с инструменти трябва да изглежда така

Може ли някой да ми каже как да персонализирам или какво да направя, за да постигна второто изображение като 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>


person SharpUrBrain    schedule 14.12.2011    source източник
comment
Бихте ли могли да публикувате своя XAML?   -  person Dror    schedule 14.12.2011
comment
@Orchestrator: Актуализирах с XAML код   -  person SharpUrBrain    schedule 14.12.2011


Отговори (3)


Доколкото знам, това не е възможно веднага, тъй като 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>
person SvenG    schedule 14.12.2011
comment
Не можем ли да използваме този DockPanel вътре в ToolBarTray и в този DockPanel едновременно лентата с инструменти? - person SharpUrBrain; 15.12.2011
comment
Не, ToolbarTray позволява само ленти с инструменти като съдържание - person SvenG; 15.12.2011
comment
Да, но искам да поправя първата лента с инструменти, а не втората. Докато плъзгам прозореца си отдясно, за да преоразмеря, тогава втората лента с инструменти ще се държи според наличното пространство. - person SharpUrBrain; 15.12.2011

Намерих решението на моя проблем, сега използвам мрежа в контролата на лентата с инструменти и коригирам размера на една колона от мрежата (toolbarGrid), за да направя моите контроли, както се вижда на второто ми изображение.

Код:

<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>
person SharpUrBrain    schedule 23.12.2011
comment
При събитие Wondow.SizeChanged преоразмерявам ширината на колоната ToolBarGrid, но всеки път не получавам точната стойност, докато преоразмерявам прозореца. Някой знае ли как да поправя проблема? - person SharpUrBrain; 23.12.2011

Простият отговор не би бил да нарисувате сив фон в горния „ред“ на вашето приложение ??

person GameAlchemist    schedule 14.12.2011