我在C#WPF应用程序中使用Image
和ComboBox
。
我希望ComboBox
的{{1}}位于Image
的右上角(而非包含两者的网格)。实际上这两个元素都在网格中。
我很难清楚地解释我想要的东西,有照片可以帮助我。
我想要的是什么:
我有什么:
如何撰写我的ComboxBox
来实现这个目标?
<Grid>
<Image HorizontalAlignment="Stretch" x:Name="VideoControl" FlowDirection="LeftToRight"/>
<ComboBox Grid.Row="1" x:Name="ListCameraDevices" Style="{StaticResource {x:Static ToolBar.ComboBoxStyleKey}}"
HorizontalAlignment="Right" VerticalAlignment="Top"
Width="auto"
Background="Transparent" BorderBrush="Transparent" Foreground="White"
BorderThickness="0"/>
</Grid>
答案 0 :(得分:2)
Gaaty的答案大多是正确的,但不需要列定义。您只需确保Image将Stretch属性设置为'Uniform',以便正确调整内部网格的大小。
这是一个简化版本:
<Grid>
<Grid HorizontalAlignment="Center" VerticalAlignment="Center">
<Image Source="https://a2ua.com/awesome/awesome-004.jpg" Stretch="Uniform" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
<ComboBox HorizontalAlignment="Right" VerticalAlignment="Top" Background="Transparent" BorderBrush="Transparent" Foreground="White" BorderThickness="0"/>
</Grid>
</Grid>
答案 1 :(得分:1)
您可以尝试在自己的网格中添加Image和ComboBox(在其他网格内),并使它们在ColumnDefinition设置的相同网格列中重叠。
<Grid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumDefinitions>
<Image Grid.Column="0" Grid.ColumSpan="2" HorizontalAlignment="Stretch" x:Name="VideoControl" FlowDirection="LeftToRight"/>
<ComboBox Grid.Column="1" Grid.Row="1" x:Name="ListCameraDevices" Style="{StaticResource {x:Static ToolBar.ComboBoxStyleKey}}"
HorizontalAlignment="Right" VerticalAlignment="Top"
Width="auto"
Background="Transparent" BorderBrush="Transparent" Foreground="White"
BorderThickness="0"/>
</Grid>
</Grid>
或者只是将它们放在自己的Grid中,只需将ComboBox的ZIndex设置为ontop。
[编辑]:
创建了一个测试项目,几乎完成了你想要完成的任务。