如何在移动我的 WinRT/C++ UWP 应用程序的应用程序 window 时关闭 ComboBox 列表项?
How to close ComboBox list items when moving application window of my WinRT/C++ UWP application?
我有一对具有 IsEditable() true 和 false 的 ComboBox 控件。
当我滚动浏览我的应用程序或移动我的应用程序 window(通过单击标题栏)并打开列表弹出窗口时,我想关闭 ComboBox 列表弹出窗口,否则会出现奇怪的情况延迟正确对齐控件下方的列表。
在 WinRT/C++ 的 UWP 中这可能吗?如果是这样,请建议如何。
我进行了一项调查,以了解在移动应用程序时 ComboBox 控件基本上从初始位置移位的情况下是否有任何事件需要处理 window/scrolling 应用程序,但找不到任何帮助.
编辑:添加来自 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 Event 当用户滚动鼠标滚轮时将触发的事件。可以先将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;
}
我有一对具有 IsEditable() true 和 false 的 ComboBox 控件。
当我滚动浏览我的应用程序或移动我的应用程序 window(通过单击标题栏)并打开列表弹出窗口时,我想关闭 ComboBox 列表弹出窗口,否则会出现奇怪的情况延迟正确对齐控件下方的列表。
在 WinRT/C++ 的 UWP 中这可能吗?如果是这样,请建议如何。
我进行了一项调查,以了解在移动应用程序时 ComboBox 控件基本上从初始位置移位的情况下是否有任何事件需要处理 window/scrolling 应用程序,但找不到任何帮助.
编辑:添加来自 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 Event 当用户滚动鼠标滚轮时将触发的事件。可以先将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;
}