2011-04-12 3 views
1

J'ai un ItemsControl présentant une liste de boutons. Chaque bouton a une image comme contenu (png), mais l'image est légèrement différente pour chaque ligne.L'image a un rendu différent selon la position

L'image ci-dessous est une version agrandie de ce que je vois:
enter image description here

Voici le XAML:

<ItemsControl ItemsSource="{Binding Items}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock Name="tb1">hello</TextBlock> 
       <Button Height="{Binding ElementName=tb1, Path=ActualHeight}" Padding="0,-3,-3,-3" BorderBrush="Transparent" Background="Transparent" > 
        <Image Stretch="Fill" Source="stock_standard_filter.png" Margin="0"> 
        </Image> 
       </Button> 
      </StackPanel> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

J'ai eu un similar issue previously et a pu le résoudre en utilisant SnapsToDevicePixels="True" , mais cette solution ne fonctionne pas cette fois. J'ai également essayé UseLayoutRounding="True" et RenderOptions.EdgeMode="Aliased"

+0

Qu'advient-il si vous essayez extensible = « Aucun »? – blindmeis

+0

@blindmeis: Cela reste différent, mais pire encore, l'image est trop grande. –

Répondre

1

La hauteur du bouton est liée de sorte que l'image sera étirée pour remplir le bouton. Parce que WPF utilise des doubles (unités de 1/96 pouces), il y aura forcément des arrondis. SnapsToDevicePixels et l'arrondi Layout peuvent vous aider lorsque vous les utilisez sur le StackPanel, mais tant que vous étirez l'image, elle devient floue.

Ma meilleure estimation est de définir « Stretch to None » et d'expérimenter avec SnapsToDevicePixels et arrondi mise en page.

Questions connexes