在使用XAML的WPF应用程序中
我创建了一个stackpanel(宽度1030),我有2个图像。 1. imgClient width = 784 Height = 66 and 2. imgClientExtra width = 1 and Height = 66
imgClientExtra将是右端,imgClient将从leftend开始。
因此,当应用程序未运行时,图像将适合784 + 1,总图像宽度为785(784 + 1).. 但是,如果应用程序正在运行..图像必须延伸到1030 ... imgClientExtra将在1030,而imgClient将不得不延伸到1029 ..
我使用了stretch.fill ......但没有用。
目前我正在使用这种方式......是否需要修改?
<StackPanel Name="stkpnlHeader" Margin="0,0,0,0" Width="1254.662" Height="auto" HorizontalAlignment="Left" VerticalAlignment="Top">
<StackPanel Name="imgStkPnl"Orientation="Vertical" Width="1253.511" HorizontalAlignment="Left">
<Image Name="imgClientPhoto" HorizontalAlignment="Left" VerticalAlignment="Top" Width="784" Height="66"
Source="D:\ehtmp_top_left.gif" Stretch="Fill" StretchDirection="Both">
</Image>
<Image Name="imgExtraImg" Width="1" Height="66" Margin="0,-66,0,0" HorizontalAlignment="Right"
Source="D:\ehtmp_top_right.gif"
></Image>
</StackPanel> </StackPanel>
答案 0 :(得分:1)
从堆栈面板更改为网格。 设置Grid.Column定义。 创建2个列定义 您可以使用“宽度”设置“比率”宽度。 例如,colA Width =“5 *”和colB Width =“3 *”表示colA获得网格的5/8,colB获得网格的3/8。 结合这个概念,同时设置MinWidth和MaxWidth,你应该很高兴。
此外,在代码中设置宽度时,通常需要使用“ActualWidth”属性而不是“Width”(有时会返回NaN)来检查现有控件宽度。
答案 1 :(得分:1)
我认为你的案例中的DockPanel会起作用,因为它会自动拉伸最后一个元素(我没有尝试构建这个代码,所以让我知道它是否不起作用):
<DockPanel Height="66">
<Image Name="imgExtraImg" Source="D:\ehtmp_top_right.gif" DockPanel.Dock="Right"/>
<Image Name="imgClientPhoto" Source="D:\ehtmp_top_left.gif"/>
</DockPanel>
答案 2 :(得分:1)
<Grid HorizontalAlignment="Left" Height="66" Name="imgGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="66"/>
</Grid.RowDefinitions>
<Image Name="imgClientPhoto" Grid.Column="0" Stretch="Fill"Source="D:\eHTMP\Exclusively_My_Work\UI_Application\Images\ehtmp_top_left.gif" ></Image>
<Image Name="imgExtraImg" Grid.Column="1"Source="D:\eHTMP\Builds\output\WPF_Example\UI_eHTMP\UI_eHTMP\Icons\ehtmp_top_right.gif"></Image></Grid>