[英]How to close ComboBox list items when moving application window of my WinRT/C++ UWP application?
我有一对 ComboBox 控件,它们具有 IsEditable() true 和 false。
当我滚动浏览我的应用程序或移动我的应用程序 window(通过单击标题栏)并打开列表弹出窗口时,我想关闭 ComboBox 列表弹出窗口,否则在控件下方正确对齐列表时会有奇怪的延迟.
在 UWP 中使用 WinRT/C++ 这可能吗? 如果是这样,请建议如何。
我进行了一项调查,以了解在移动应用程序窗口/滚动应用程序时 ComboBox 控件基本上从初始 position 移走时是否有任何事件需要处理,但找不到任何帮助。
编辑:添加来自 XAML 控件库的 ComboBox 图像以演示该行为。 如果 IsEditable 设置为 true,当打开弹出窗口并滚动应用程序时,弹出窗口会超出 window。相反,我想关闭弹出窗口本身。 但是,如果 IsEditable 设置为 false,则在关闭弹出窗口之前我们无法滚动。
更新:我为 PointerWheelChanged 测试的代码
void CBFile2022X::OnPointerWheelChangedHandler( Windows::Foundation::IInspectable const& sender,
Windows::UI::Xaml::Input::PointerRoutedEventArgs const& eventargs )
{
OutputDebugString( L"PointerWheelChanged" );
if( ComboBox != nullptr )
{
ComboBox.IsEnabled( false );
ComboBox.IsEnabled( true );
}
}
我不得不说,目前没有事件可以检测应用程序 window 是否被移动或更改其位置。
更新:
您可以处理UIElement.PointerWheelChanged 事件,该事件将在用户滚动鼠标滚轮时触发。 您可以先将 ComboBox 的IsEnabled
属性设置为false ,然后将其设置为true ,这样会使 ComboBox 失去焦点。 喜欢:
private void Mypanel_PointerWheelChanged(object sender, PointerRoutedEventArgs e)
{
FontsCombo.IsEnabled = false;
FontsCombo.IsEnabled = true;
}
更新2:
如果您使用的是ScrollViewer
,您可以尝试处理ScrollViewer.ViewChanging Event 。
private void ScrollViewer_ViewChanging(object sender, ScrollViewerViewChangingEventArgs e)
{
FontsCombo.IsEnabled = false;
FontsCombo.IsEnabled = true;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.