2015-04-22 52 views
2

我有一个弹出窗口,它包含一个堆栈面板。并且在面板中有一些控件。WPF - 减少堆栈面板中的项目之间的差距

<Popup Name="popTest" Placement="Mouse" AllowsTransparency="True"  AllowDrop="True" PopupAnimation="Slide" Height="400" Width="500" > 

     <Border BorderThickness="5" > 
      <StackPanel Background="WhiteSmoke"> 
       <TextBlock Text="SomeName" MaxWidth="100" MaxHeight="100" /> 
       <Image Source="{Binding TestImage, Mode=TwoWay}" Width="300" Height="300" /> 
       <TextBlock Text="TheOtherName" Margin="0,2,0,0" /> 
       <TextBlock Text="AnotherName" TextWrapping="Wrap" /> 
      </StackPanel> 
     </Border> 

     </Popup> 

堆栈面板中的项目之间存在一个大小差距。我试过用分离器。这并没有帮助我缩小差距。我甚至尝试设置宽度和高度。这也是行不通的。

有没有其他方法可以做到这一点?

+2

StackPanel不会在其子元素之间放置任何间隙。但是,您可以尝试在元素上设置负边距。 – Clemens

+0

了解全球风格和边距设置 – Muds

回答

0

从TextBlock中删除MaxWidth =“100”MaxHeight =“100”。对于图片宽度=“300”高度=“300”,您加载的图片的宽度和高度是300和300,如果图片很小,显然您会看到空白区域。您可以使用网格而不是堆叠面板。

0

对于该图像,如果原始资源图像的实际宽高比为3比2,并且指定了Width="300" Height="200",则图像将在其与上下方的环绕文本块之间没有间隔的情况下显示。

如果要保证在这样的图像周围没有填充,请指定HeightWidth,但不能同时指定两者。

或者,如果要强制图像显示为300 x 200(即使它在物理上较大或具有不同的纵横比),请通过设置“拉伸”属性将其填充到所需的尺寸: -

<Image Source="TestImage.jpg" Width="300" Height="200" Stretch="Fill"/>