我需要一个项目控制 * 弹出 *(因为我需要在一个数据网格中使用它,所以当它被扩展的列宽不受影响),这表明项目水平。理想情况下,它应该是带有水平“下拉”的组合框。更好的是,如果它不下拉,但弹出以上的组合按钮的中心(选择项目或Esc键将关闭它)。项目是固定大小的正方形30x30,数量很少,所以不需要滚动视图。
我发现这个“代码”根本不起作用(屏幕上没有任何渲染):
<ComboBox HorizontalAlignment="Left" VerticalAlignment="Top" Width="120">
<ComboBox.Items>
<ComboBoxItem>Item 1</ComboBoxItem>
<ComboBoxItem>Item 2</ComboBoxItem>
<ComboBoxItem>Item 3</ComboBoxItem>
</ComboBox.Items>
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}">
<Setter Property="HorizontalContentAlignment" Value="Center"/>
</Style>
</ComboBox.ItemContainerStyle>
<ComboBox.Template>
<ControlTemplate TargetType="{x:Type ComboBox}">
<Grid>
<Popup x:Name="PART_Popup" AllowsTransparency="true" IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" Placement="Bottom">
<Border x:Name="DropDownBorder" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" BorderThickness="1">
<ScrollViewer x:Name="DropDownScrollViewer">
<StackPanel IsItemsHost="true"/>
</ScrollViewer>
</Border>
</Popup>
</Grid>
</ControlTemplate>
</ComboBox.Template>
</ComboBox>
如何让它工作?
1条答案
按热度按时间bwntbbo31#
此行为应解决弹出窗口定位问题。
xaml中的用法: