所以我对WPF很新,而且我的Window布局有问题。目前我有一个WPF应用程序,其Grid定义如下:
<Grid.RowDefinitions>
<RowDefinition Height="23" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
在最上面一行,跨越两列,我有一个菜单。在第二行中,我在第一列中有一些标签,在第二列中有一个Image和一个WindowsFormsHost,最后,在第三行中,我在第二列中有一个图形控件。默认情况下,我将Image和WFH的大小设置为570 x 413.现在,我希望在调整Window的大小时,Image和WFH都会扩展,以便它们保持相同的(相对于Window)大小。 (我实际上也希望同样的情况发生在我的图形控件上,但如果我能得到其他的话,我可能会想出那个。我不能为我的生活找出我需要打开/关闭的设置或者我可能需要绑定或其他什么才能实现这一点。非常感谢任何帮助!
谢谢!
答案 0 :(得分:7)
你试过了吗?
<RowDefinition Height="*" />
确保在图像或控件中指定Grid.Row,但不要对控件的高度/宽度属性进行签名。控件应自动扩展。
<强>更新强>
进行了快速测试以确保其有效。
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="23"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Label Grid.Row="0" Content="Example"/>
<Image Grid.Row="1" Source="c:\Example.jpg"/>
<Label Grid.Row="2" Content="Example2"/>
</Grid>
图像会根据图像的比例随应用程序扩展。它确实扩展了,但它保持了它的尺寸以及视图中的完整图像。如果您要将行定义从*****更改为自动,您会注意到图像将会展开,但它会扩展到您的视图之外。这意味着你不会总是看到完整的图像。
我建议像上面那样制作一个简单的应用程序,并使用约束来弄清楚各自的作用。
答案 1 :(得分:3)
您需要在描述中显示更多信息,因为网格和图像等的所有属性都会影响布局。
但是,您可能希望查看Grid和Image的HorizontalAlignment和VerticalAlignment属性,以及Image的Stretch属性。此外,您不希望为图像指定固定大小(如果您希望它们在启动时具有特定大小,则可以指定MinWidth和MinHeight。)
这是一个快速示例,显示填充窗口的网格,带有缩放图像。
<Grid HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="23" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="2" Content="First Row" />
<Label Grid.Column="0" Grid.Row="1" Content="Column 0, Row 1" />
<Image Grid.Column="1" Grid.Row="1"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Source="Resources\ExamplePicture.png"
Stretch="Uniform" />