2013-09-02 4 views
2

Есть ли способ иметь панель инструментов (запас/обычай), которая выравнивает все кнопки вместе в одну сторону, скажем, влево?Автоматическое выравнивание кнопок на панели инструментов

У меня есть 3 кнопки, a, b, c на панели инструментов. Если я динамически делаю b, то видимый промежуток между a и c. Как я могу получить панель инструментов, которая автоматически закрывает промежуток между a и c вместе, но восстанавливает порядок, когда b снова становится видимым?

Спасибо!

информация

Я попытался <Toolbar />, <Stackpanel />, <DockPanel /> до сих пор, но они не выравнивать кнопки.

+3

сделать b 'Collapsed' вместо' Hidden' – Bolu

+0

@Bolu, ваш ответ сработал !!!!! Пожалуйста, положите его как ответ, и я приму это. – Nayan

ответ

3

Вам нужно сделать б Collapsed вместо Hidden

Обратитесь к MSDN UIElement.Visibility Property:

В модели WPF, Hidden обозначает состояние видимости где объект не должен отображать, но должен по-прежнему занимать пространство в макете WPF.

И более конкретно, как и @Nayan отметил, может относиться к Visibility Enumeration:

  • Collapsed Не отображать элемент, а не резервировать места для него в макете.
  • Скрыт Не отображать элемент, а зарезервировать место для элемента в макете.
  • Видимый Отображение элемента.

PS: Вот почему для BooleanToVisibilityConverter:.

Метод Convert возвращает Visibility.Visible, когда истина передается или Visibility.Collapsed когда ложь передается в

+0

, пожалуйста, поделитесь ссылкой на эту документацию. Спасибо! – Nayan

+0

@Nayan, Обновлено: – Bolu

+1

Thx! Это то, что я хотел: http://msdn.microsoft.com/en-us/library/system.windows.visibility.aspx – Nayan

1

Используйте StackPanel:

<StackPanel Orientation="Horizontal"> 
    <Button Width="100" Click="Button_Click" /> 
    <Button Width="100" Click="Button_Click" /> 
    <Button Width="100" Click="Button_Click" /> 
    <Button Width="100" Click="Button_Click" /> 
</StackPanel> 

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    ((Button)sender).Visibility = Visibility.Collapsed; 
} 
+0

Вы пробовали это самостоятельно? Это не работает. Разрыв все еще виден. – Nayan

+0

Я просто попробовал прямо сейчас, и все работает отлично ... Я обновлю свой ответ. – Sheridan

Смежные вопросы