我有Grid
配置了列。在第一列中,我有Image
,第二列StackPanel
有TextBlocks
,其余列有其他TextBlock。
当我运行app时,我看到了Image和其他的TextBlocks。问题是StackPanel与Image重叠(TextBlock的内容显示在Image上),部分内容显示在Grid的其他列下。我将MinWidth
添加到Image和Stackpanel,但它没有解决问题:/
看起来Image没有宽度,所以StackPanel与它重叠,StackPanel也没有足够的宽度,所以它隐藏在其他列下。
示例,所有TextBlock都绑定到数据源:
<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>
答案 0 :(得分:1)
您已声明具有固定宽度的列。很明显,这些列中的内容比您声明的列宽要宽。
在这种情况下,将MinWidth
添加到Image
和StackPanel
将无济于事。您需要设置这两个项目的MaxWidth
,以防止它们比声明的列宽更宽。
设置固定列宽会首先失败使用WPF的目的之一。 WPF,如果正确实现,将允许您的用户界面在窗口大小更改时很好地扩展。
下面显示的是更适合WPF的列定义:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
<ColumnDefinition Width="4.8*"/>
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="2*" />
</Grid.ColumnDefinitions>
上面显示的列宽值将给出与示例中固定值相同的宽度比,但是当窗口大小发生变化时,它们是可缩放的。