Маркер ListBox не совпадает с областью Windows 7 и Windows 8

Я создал WPF ListBox. Я разрабатываю под Windows 8. После того, как вы настроите стиль следующим образом (см. Изображение), при тестировании приложения в Windows 7 разница не будет одинаковой. Как вы можете видеть в воображении, разделение между узлами - 1px в Windows 8, но 0 пикселей в Windows 7.

enter image description here

Вы знаете, почему это и как его решить?

Спасибо заранее.

Ответ 1

Мне на самом деле удалось избавиться от него сам, похоже, что стиль ListViewItem изменен Windows8, добавив стиль для локальных ресурсов ListView, сработал у меня.

    <ListView.Resources>
        <Style TargetType="ListViewItem">
            <Setter Property="Margin" Value="0"/>
            <Setter Property="Padding" Value="0"/>
            <Setter Property="BorderThickness" Value="0"/>
        </Style>
    </ListView.Resources>

Ответ 2

Вы можете попробовать установить поле ListBoxItem явно в DataContext. Например:

<ListBox>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}" Margin="0,0,0,1" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Может быть, из-за того, что для окон для Windows 7 и Windows 8 существуют разные стили.

Ответ 3

Элемент ListBoxItem по умолчанию содержит границу. ListBoxItem также указывает дополнение, которое наследуется этой границей. Его Padding DP, который должен быть установлен так, как упомянул Энди.