将ComboBox修复为图像

时间:2016-09-06 10:43:37

标签: c# wpf combobox

我在C#WPF应用程序中使用ImageComboBox

我希望ComboBox的{​​{1}}位于Image的右上角(而非包含两者的网格)。实际上这两个元素都在网格中。

我很难清楚地解释我想要的东西,有照片可以帮助我。

我想要的是什么:

resizeOK

我有什么:

resizeNOK

如何撰写我的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>

2 个答案:

答案 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。

[编辑]:

创建了一个测试项目,几乎完成了你想要完成的任务。