2013-02-15 15 views
10

Mam stylizowany ListBox WPF. Pracuję w systemie Windows 8. Po ustawieniu stylu na następujący (patrz obraz), kiedy testuję aplikację w Windows 7, margines nie jest taki sam. Jak widać w Imagen separacja między węzłami jest 1px w Windows 8, ale 0 px w Windows 7.Margines ListBox nie jest taki sam w Windows 7 i Windows 8

enter image description here

Czy wiesz dlaczego tak jest i jak go rozwiązać?

Z góry dziękuję.

+1

Czy próbowałeś używać snoop (http://snoopwpf.codeplex.com/), aby sprawdzić, czy listbox W7 rozważa ustawioną granicę? –

+0

Mam ten sam problem, dodatkowe pole marginesu nie pojawia się w węźle. – Andy

Odpowiedz

6

Właściwie udało mi się go samemu pozbyć, wygląda na to, że jest to styl ListViewItem, który jest zmieniany przez Windows8, dodając styl do lokalnych zasobów ListView pracował dla mnie.

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

Działa to świetnie. Wygląda na to, że tylko wypełnienie i grubość krawędzi są potrzebne, aby rozwiązać to za mnie. –

-1

Można spróbować jawnie ustawić margines ListBoxItem w DataContext. Na przykład:

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

Może być, ponieważ system Windows 7 i Windows 8 mają różne style dla pól list.

+0

Ustawienie marginesu nie naprawiło go dla mnie, wydaje się, że jest to dodatkowy margines, który pojawia się wokół elementów listy. – Andy

+0

Spróbuj także ustawić wartości wypełnienia i grubości krawędzi. Możesz użyć [snoop] (http://snoopwpf.codeplex.com/), aby zobaczyć ustawione wartości. –

-1

Domyślny obiekt ListBoxItem zawiera obramowanie. ListBoxItem określa również dopełnienie, które jest dziedziczone przez tę granicę. Jest to Padding DP, który musi być ustawiony tak, jak wspomniał Andy.