Popup Konteks
Popup Konteks adalah kontrol utama dalam Tampilan ContextPopup dari kerangka kerja Pita Windows. Ini adalah sistem menu konteks kaya yang hanya diekspos oleh kerangka kerja sebagai ekstensi untuk implementasi Pita—kerangka kerja tidak mengekspos Popup Konteks sebagai kontrol independen.
Komponen Popup Konteks
Popup Konteks adalah kontainer logis untuk Menu Konteks dan sub-kontrol Mini-Toolbar yang diekspos melalui elemen markup ContextMenu dan MiniToolbar , masing-masing:
- ContextMenu memaparkan menu Perintah dan galeri.
- MiniToolbar memaparkan toolbar mengambang dari berbagai Perintah, galeri, dan kontrol kompleks seperti Kontrol Font dan Kotak Kombo.
Setiap sub-kontrol dapat muncul paling banyak sekali dalam Popup Konteks.
Cuplikan layar berikut mengilustrasikan Popup Konteks dan subkontrol konstituennya.
Popup Konteks murni konseptual dan tidak mengekspos fungsionalitas UI itu sendiri, seperti posisi atau ukuran.
Catatan
Popup Konteks biasanya ditampilkan dengan mengklik kanan mouse (atau melalui pintasan keyboard SHIFT+F10) pada objek yang menarik. Namun, langkah-langkah yang diperlukan untuk menampilkan Popup Konteks ditentukan oleh aplikasi.
Menerapkan Popup Konteks
Dengan cara yang sama dengan kontrol kerangka kerja Windows Ribbon lainnya, Popup Konteks diimplementasikan melalui komponen markup yang menentukan detail presentasinya dan komponen kode yang mengatur fungsionalitasnya.
Tabel berikut mencantumkan kontrol yang didukung oleh setiap sub-kontrol Popup Konteks.
Kontrol | Mini-Toolbar | Menu Konteks |
---|---|---|
Tombol | x | x |
Kotak Centang | x | x |
Kotak Kombo | x | |
Tombol Drop-Down | x | x |
Pemilih Warna Turun Bawah | x | x |
Galeri Drop-Down | x | x |
Kontrol Font | x | |
Tombol Bantuan | ||
Galeri Dalam Pita | ||
Spinner | ||
Tombol Pisahkan | x | x |
Galeri Tombol Terpisah | x | x |
Tombol Alih | x | x |
Markup
Setiap sub-kontrol Popup Konteks harus dideklarasikan satu per satu dalam markup.
Mini-Toolbar
Saat menambahkan kontrol ke Toolbar Mini Popup Konteks, dua rekomendasi berikut harus dipertimbangkan:
- Kontrol harus sangat dikenali dan menyediakan fungsionalitas yang jelas. Keakraban adalah kuncinya, karena label dan tipsalat tidak diekspos untuk kontrol Mini-Toolbar.
- Setiap Perintah yang diekspos oleh kontrol harus disajikan di tempat lain di UI pita. Mini-Toolbar tidak mendukung navigasi keyboard.
Contoh berikut menunjukkan markup dasar untuk elemen MiniToolbar yang berisi tiga kontrol Tombol .
Catatan
Satu elemen MenuGroup ditentukan untuk setiap baris kontrol di Toolbar Mini.
<MiniToolbar Name="MiniToolbar">
<MenuGroup>
<Button CommandName="cmdButton1" />
<Button CommandName="cmdButton2" />
<Button CommandName="cmdButton3" />
</MenuGroup>
</MiniToolbar>
Menu Konteks
Contoh berikut menunjukkan markup dasar untuk elemen ContextMenu yang berisi tiga kontrol Tombol .
Catatan
Setiap set kontrol dalam elemen MenuGroup dipisahkan oleh bilah horizontal di Menu Konteks.
<ContextMenu Name="ContextMenu">
<MenuGroup>
<Button CommandName="cmdCut" />
<Button CommandName="cmdCopy" />
<Button CommandName="cmdPaste" />
</MenuGroup>
</ContextMenu>
Meskipun Popup Konteks dapat berisi paling banyak satu dari setiap sub-kontrol, beberapa deklarasi elemen ContextMenu dan MiniToolbar dalam markup Pita valid. Ini memungkinkan aplikasi untuk mendukung berbagai kombinasi Menu Konteks dan kontrol Mini-Toolbar, berdasarkan kriteria yang ditentukan oleh aplikasi, seperti konteks ruang kerja.
Untuk informasi selengkapnya, lihat elemen ContextMap .
Contoh berikut menunjukkan markup dasar untuk elemen ContextPopup .
<ContextPopup>
<ContextPopup.MiniToolbars>
<MiniToolbar Name="MiniToolbar">
<MenuGroup>
<Button CommandName="cmdButton1" />
<Button CommandName="cmdButton2" />
<Button CommandName="cmdButton3" />
</MenuGroup>
</MiniToolbar>
</ContextPopup.MiniToolbars>
<ContextPopup.ContextMenus>
<ContextMenu Name="ContextMenu">
<MenuGroup>
<Button CommandName="cmdCut" />
<Button CommandName="cmdCopy" />
<Button CommandName="cmdPaste" />
</MenuGroup>
</ContextMenu>
</ContextPopup.ContextMenus>
<ContextPopup.ContextMaps>
<ContextMap CommandName="cmdContextMap" ContextMenu="ContextMenu" MiniToolbar="MiniToolbar"/>
</ContextPopup.ContextMaps>
</ContextPopup>
Kode
Untuk memanggil Popup Konteks, metode IUIContextualUI::ShowAtLocation dipanggil saat jendela tingkat atas aplikasi Pita menerima pemberitahuan WM_CONTEXTMENU.
Contoh ini menunjukkan cara menangani pemberitahuan WM_CONTEXTMENU dalam metode WndProc() dari aplikasi Pita.
case WM_CONTEXTMENU:
POINT pt;
POINTSTOPOINT(pt, lParam);
// ShowContextualUI method defined by the application.
ShowContextualUI (pt, hWnd);
break;
Contoh berikut menunjukkan bagaimana aplikasi Pita bisa memperlihatkan Popup Konteks di lokasi layar tertentu menggunakan metode IUIContextualUI::ShowAtLocation .
GetCurrentContext() memiliki nilai cmdContextMap
seperti yang didefinisikan dalam contoh markup sebelumnya.
g_pApplication adalah referensi ke antarmuka IUIFramework .
HRESULT ShowContextualUI(POINT& ptLocation, HWND hWnd)
{
GetDisplayLocation(ptLocation, hWnd);
HRESULT hr = E_FAIL;
IUIContextualUI* pContextualUI = NULL;
if (SUCCEEDED(g_pFramework->GetView(
g_pApplication->GetCurrentContext(),
IID_PPV_ARGS(&pContextualUI))))
{
hr = pContextualUI->ShowAtLocation(ptLocation.x, ptLocation.y);
pContextualUI->Release();
}
return hr;
}
Referensi ke IUIContextualUI dapat dirilis sebelum Popup Konteks ditutup, seperti yang ditunjukkan pada contoh sebelumnya. Namun, referensi harus dirilis pada titik tertentu untuk menghindari kebocoran memori.
Perhatian
Mini-Toolbar memiliki efek pudar bawaan yang didasarkan pada kedekatan penunjuk mouse. Untuk alasan ini, disarankan agar Mini-Toolbar ditampilkan sedekat mungkin dengan penunjuk mouse. Jika tidak, karena mekanisme tampilan yang bertentangan, Mini-Toolbar mungkin tidak merender seperti yang diharapkan.
Properti Popup Konteks
Tidak ada kunci properti yang terkait dengan kontrol Popup Konteks.
Topik terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk