繁体   English   中英

如何在移动我的 WinRT/C++ UWP 应用程序的应用程序 window 时关闭 ComboBox 列表项?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM