2011-04-12 115 views
1

我有一个ItemsControl呈现按钮列表。每个按钮都有一个图像,因为它的内容(png),但图像看起来每行都略有不同。图像根据位置呈现不同

下面的图像被放大的我所看到的版本:
enter image description here

这里是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> 

我有一个similar issue previously,并可被SnapsToDevicePixels="True"解决它,但这个解决方案这次不起作用。我也试过UseLayoutRounding="True"RenderOptions.EdgeMode="Aliased"

+0

如果尝试Stretch =“None”,会发生什么情况? – blindmeis 2011-04-12 05:27:10

+0

@blindmeis:它仍然呈现不同的方式,但更糟的是图像太大。 – 2011-04-12 05:38:09

回答

1

该按钮的高度是绑定的,因此图像将被拉伸以填充按钮。因为WPF使用双打(1/96英寸单位),所以必定会有一些四舍五入的结果。在StackPanel上使用SnapsToDevicePixels和Layout舍入可能会有所帮助,但只要您拉伸图像,就会变得模糊。

我最好的猜测是设置“Stretch to None”并尝试使用SnapsToDevicePixels和Layout四舍五入。