簡體   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