组合框弹出窗口位置出现问题。在我的项目中,我希望组合框弹出窗口位于右侧或左侧,所以我决定更改弹出窗口的水平偏移量。弹出窗口将按我的预期偏移,但问题是当我指定水平偏移量的值时。弹出窗口无法根据可用空间调整位置。
这里我附加了指定offset值的代码,
<VisualStateGroup x:Name="DropDownStates">
<VisualState x:Name="Opened">
<VisualState.Setters>
<Setter Target="Popup.HorizontalOffset"
Value="50" />
</VisualState.Setters>
<Storyboard>
<SplitOpenThemeAnimation OpenedTargetName="PopupBorder"
ClosedTargetName="ContentPresenter"
OffsetFromCenter="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.DropDownOffset}" />
</Storyboard>
</VisualState>
<VisualState x:Name="Closed">
<Storyboard>
<SplitCloseThemeAnimation OpenedTargetName="PopupBorder"
ClosedTargetName="ContentPresenter"
OffsetFromCenter="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=TemplateSettings.DropDownOffset}" />
</Storyboard>
</VisualState>
</VisualStateGroup>
有什么建议可以克服这个问题吗?无论是XAML还是C#。
1条答案
按热度按时间nue99wik1#
如果我们可以通过覆盖
ControlTemplate
来实现这一点,那就更好了,但我找不到一种方法。因此,让我建议您创建一个从ComboBox
派生的控件。而且就像平常的
ComboBox
一样使用它。