@daniil14056

Как создатьListBox из toggleButton вплотную, в строку, без отступов?

Я не понимаю, откуда вообще берется отступ между togglebutto-ми горизонтальными в listbox(там через стек панель), кто его создаёт, свотрю дерево, там нету ни одного margin padding, а в итоге Background ToggleButton выделяется только на границе Названия этой кнопки, а вокруг еще по 5 пикселей области, которая не нажимается, но вокруг которой есть голубой Border, Который вообще невозможно уничтожиться.
<StackPanel Orientation="Horizontal">
        <ToggleButton>1</ToggleButton>
        <ToggleButton>2</ToggleButton>
    </StackPanel>

Почему вот так вот все работает, И у меня 100% полный контроль над всем.
А вот так вот не работает, появляются какие-то невидимые неотображаемые неконтролируемые области, какие-то выделения при наведении, Везде Margin по нулю, а есть области
<ListBox.ItemsPanel>
                    <ItemsPanelTemplate>
                        <StackPanel Orientation="Horizontal" Background="Green" > 
                      </StackPanel>
                    </ItemsPanelTemplate>
                </ListBox.ItemsPanel>
                <ListBox.ItemTemplate>
                    <DataTemplate>
                <ToggleButton  //вообще не спасает  Style="{DynamicResource ToggleButtonStyle}"
                              Content="{Binding Value}"
                                                BorderThickness="0"  
                                         IsChecked="{Binding Value}" 
                        </ToggleButton>
                    </DataTemplate>
                </ListBox.ItemTemplate>

Где-то между StackPanel и ListBox.ItemTemplate есть какая-то не убиваемая область. Которая не принадлежит кнопки, как от нее избаваиться. То есть вокруг каждого ListBox.ItemTemplate какая-то обертка, которая нигде в дереве не отображается
  • Вопрос задан
  • 41 просмотр
Решения вопроса 1
@LAVladis
Вы описали несколько вопросов, связанных с отображением и стилизацией элементов в WPF, включая внешний вид кнопок, границы и размещение элементов в `ListBox`. Давайте разберем каждый вопрос по отдельности.

1. Голубая граница при наведении на кнопки (ToggleButton):
Ваше описание голубой границы при наведении на кнопки намекает на дефолтный стиль, который применяется к кнопкам при состоянии "MouseOver". Чтобы отключить это стандартное поведение, вы можете определить свой стиль кнопок в ресурсах и переопределить анимации или свойства, связанные с этим состоянием. Пример:

<Window.Resources>
    <Style TargetType="ToggleButton">
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="BorderBrush" Value="Transparent"/>
        <!-- Другие свойства стиля -->
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="Transparent"/> <!-- Убрать голубой фон -->
                <Setter Property="BorderBrush" Value="Transparent"/> <!-- Убрать голубую границу -->
                <!-- Другие изменения для состояния MouseOver -->
            </Trigger>
        </Style.Triggers>
    </Style>
</Window.Resources>


2. Проблема с отступами между `ToggleButton` в `ListBox`:
Вероятно, вы сталкиваетесь с внутренними отступами кнопок внутри `ListBoxItem`, которые создают пространство между ними. Чтобы убрать это, вы можете попробовать установить `Padding` для `ToggleButton` в `ListBox.ItemContainerStyle`:

<ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
        <Setter Property="Padding" Value="0"/>
    </Style>
</ListBox.ItemContainerStyle>


3. Вопрос по размещению элементов в `ListBox`:
`ListBox` - это хороший способ отображения списка элементов. Вы можете использовать свойство `ItemsSource` для связывания элементов и шаблонов, а также настроить визуальное оформление через `ItemTemplate`, `ItemContainerStyle` и другие свойства.

Если вы сталкиваетесь с вопросами связанными с отображением и стилизацией элементов в `ListBox`, то это скорее всего требует настройки стилей, шаблонов или дополнительных свойств. Если у вас возникают сложности с определением причины нежелательного поведения, рекомендуется использовать инструменты для визуального анализа разметки, такие как "Live Visual Tree" в Visual Studio, чтобы исследовать структуру элементов и их свойства в реальном времени.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы