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