2014-11-06 142 views
0

我有一个配置有列的Grid。在第一列中,我有一个Image,第二个StackPanelTextBlocks,其余列中的其他TextBlocks。Stackpanel重叠图像

当我运行应用程序时,我看到图像和其他TextBlocks。问题在于StackPanel与图像重叠(TextBlock的内容出现在图像上),部分内容出现在网格中的其他列下。我将MinWidth添加到Image和Stackpanel,但它没有解决问题:/
它看起来像Image没有宽度,所以StackPanel与它重叠,并且StackPanel也没有足够的宽度,因此它隐藏在其他列下。

实施例中,所有的TextBlocks绑定到数据源:

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="25" MinWidth="25" /> 
     <ColumnDefinition Width="120" MinWidth="120" /> 
     <ColumnDefinition Width="50" /> 
     <ColumnDefinition Width="50" /> 
    </Grid.ColumnDefinitions> 

    <Image Grid.Column="0" /> 
    <StackPanel Grid.Column="1" Orientation="Horizontal"> 
     <Textblock /> 
     <TextBlock /> 
    </StackPanel> 
    <TextBlock Grid.Column="2" /> 
    <TextBlock Grid.Column="3" /> 
</Grid> 
+1

需要仅仅是(列之后没有),并且它没有关闭 – 2014-11-06 15:12:01

+0

我不是从代码复制它,而是重新键入我自己以便拼写错误:/ – netmajor 2014-11-06 15:13:31

+0

发布您的代码或更接近你的代码是什么,尽可能使用你的例子,因为我可以假设你的意思对图像工作正常,没有重叠。 – 2014-11-06 15:15:57

回答

1

您已宣布具有固定宽度的列。看起来很明显,这些列中的内容比您声明的列宽要宽。

MinWidth添加到ImageStackPanel不会帮助在这种情况下。您需要设置这两个项目的MaxWidth以防止它们比声明的列宽更宽。

设置固定列宽度首先破坏了使用WPF的目的之一。正确实施WPF时,将允许您的用户界面在窗口大小更改时很好地缩放。

下面显示的是列定义,将用于WPF更合适:

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="1*" /> 
    <ColumnDefinition Width="4.8*"/> 
    <ColumnDefinition Width="2*" /> 
    <ColumnDefinition Width="2*" /> 
</Grid.ColumnDefinitions> 

对列宽以上所示的数值会得到宽度为您的例子中,固定值的相同的比例,但它们是可伸缩的当窗口大小改变时。