Bagikan melalui


Popup Konteks

Popup Konteks adalah kontrol utama dalam Tampilan ContextPopup 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 melaluiContextMenu dan elemen markupMiniToolbar, masing-masing:

Setiap sub-kontrol dapat muncul paling banyak sekali dalam Popup Konteks.

Cuplikan layar berikut mengilustrasikan Popup Konteks dan subkontrol konstituennya.

cuplikan layar dengan callout memperlihatkan komponen ui kontekstual pita.

Popup Konteks murni konseptual dan tidak mengekspos fungsionalitas UI itu sendiri, seperti penempatan atau ukuran.

Nota

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.

Menguasai Mini-Toolbar Menu Konteks
Tombol x x
Kotak Centang x x
Combo Box x
TombolDrop-Down x x
Pemilih WarnaDrop-Down x x
GaleriDrop-Down x x
Kontrol Font x
Tombol Bantuan
GaleriIn-Ribbon
Spinner
Tombol Pisahkan x x
Split Button Gallery x x
Tombol Alihkan 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 memberikan fungsionalitas yang jelas. Keakraban adalah kunci, 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 elemenMiniToolbar yang berisi tiga kontrol Tombol.

Nota

Satu elemenMenuGroupditentukan 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 elemenContextMenu yang berisi tiga kontrol Tombol.

Nota

Setiap set kontrol dalam elemenMenuGroup 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 salah satu dari setiap sub-kontrol, beberapa ContextMenu dan MiniToolbar deklarasi elemen 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 elemenContextMap.

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() 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 dapat 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 antarmukaIUIFramework.

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 keIUIContextualUI dapat dirilis sebelum Popup Konteks dihentikan, seperti yang ditunjukkan pada contoh sebelumnya. Namun, referensi harus dirilis pada titik tertentu untuk menghindari kebocoran memori.

Hati

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.

Pustaka Kontrol Windows Ribbon Framework

Sampel ContextPopup