2013-02-15 10 views
10

Ho designato un ListBox WPF. Sto sviluppando sotto Windows 8. Dopo aver impostato lo stile come segue (vedi immagine), quando provo l'applicazione in Windows 7, il margine non è lo stesso. Come si può vedere nel imagen la separazione tra i nodi è 1px in Windows 8, ma 0 px in Windows 7.Il margine di ListBox non è lo stesso in Windows 7 e Windows 8

enter image description here

Sapete perché è questo, e come risolverlo?

Grazie in anticipo.

+1

Hai provato a usare snoop (http://snoopwpf.codeplex.com/) per vedere se la casella di riepilogo W7 sta considerando il bordo che stai impostando? –

+0

Ho lo stesso problema, lo spazio margine extra non appare nello snoop. – Andy

risposta

6

In realtà sono riuscito a sbarazzarmene da solo, sembra che sia lo stile ListViewItem che viene modificato da Windows8, aggiungendo uno stile alle risorse locali di ListView che ha funzionato per me.

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

Funziona alla grande. Sembra che siano necessari solo Padding e BorderThickness per risolverlo. –

-1

Si potrebbe provare a impostare il margine ListBoxItem in modo esplicito in un DataContext. Per esempio:

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

Potrebbe essere perché Windows 7 e Windows 8 hanno stili diversi per caselle di riepilogo.

+0

L'impostazione del margine non ha effettivamente risolto il problema per me, sembra che questo sia un margine aggiuntivo che appare intorno agli elementi dell'elenco. – Andy

+0

Prova anche a impostare i valori di spaziatura e lo spessore del bordo. È possibile utilizzare [snoop] (http://snoopwpf.codeplex.com/) per vedere i valori impostati. –

-1

Il ListBoxItem predefinito contiene un bordo. ListBoxItem specifica anche un riempimento che viene ereditato da questo bordo. È il Padding DP che deve essere impostato come quello che ha menzionato Andy.

Problemi correlati