ListBox margin is not the same in Windows 7 and Wi

2019-04-05 03:43发布

问题:

I have styled an WPF ListBox. I'm developing under Windows 8. After setup the style to be as follows (see image), when I test the application in Windows 7, the margin is not the same. As you can see in the imagen the separation between nodes is 1px in Windows 8, but 0 px in Windows 7.

Do you know why is this, and how to solve it?

Thanks in advance.

回答1:

I actually managed to get rid of it myself, it looks like it's ListViewItem style that's being changed by Windows8, adding a style to the local resources of the ListView has worked for me.

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


回答2:

You could try setting the ListBoxItem margin explicitly in a DataContext. For example:

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

Could be because Windows 7 and Windows 8 have different styles for list boxes.



回答3:

The default ListBoxItem contains a border. The ListBoxItem also specifies a padding which is inherited by this Border. Its the Padding DP that needs to be set like what Andy mentioned.