簡體   English   中英

在WPF托管的ListView中啟用組

[英]Enable groups in the ListView hosted by WPF

我在WPF應用程序中托管了一個舊的Winforms控件。 控件使用了內部的System.Windows.Forms.ListView ,而此ListView使用了Groups功能。

問題在於,由WPF托管時,此控件不會顯示組。 我已經手動比較了由Winforms應用程序和WPF應用程序托管的ListView的屬性。 對於這兩個ListViews, ShowGroups屬性均為true。

但是,有一個名為GroupsEnabled的屬性,在Winforms中托管控件時為true,在WPF中托管控件時為false。 我在這里找到定義:

internal bool GroupsEnabled
{ 
    get { 
        return this.ShowGroups && groups != null && groups.Count > 0 && ComctlSupportsVisualStyles && !VirtualMode;
    } 
}

VirtualMode對兩者都為false,但ComctlSupportsVisualStyles對Winforms托管為true,對於WPF應用程序為false。
來自相同來源的ComctlSupportsVisualStyles代碼:

private bool ComctlSupportsVisualStyles { 
 get {
      if(!listViewState[LISTVIEWSTATE_comctlSupportsVisualStylesTested])  
      {
          listViewState[LISTVIEWSTATE_comctlSupportsVisualStylesTested] = true;
          listViewState[LISTVIEWSTATE_comctlSupportsVisualStyles] = Application.ComCtlSupportsVisualStyles; 
      }
      return listViewState[LISTVIEWSTATE_comctlSupportsVisualStyles]; 
  } 
}

我想我需要在WPF代碼中以某種方式設置Application.ComCtlSupportsVisualStyles
這必須是System.Windows.Forms.Application而不是System.Windows.Application
有什么辦法嗎?

為您的應用程序啟用視覺樣式應該可以解決此問題:

System.Windows.Forms.Application.EnableVisualStyles();

WinForms ListView控件不支持組,除非啟用了視覺樣式(從技術上講,除非使用了ComCtrl32庫的版本6,該版本與支持視覺樣式所需的版本相同)。

另請參閱: 如何:在混合應用程序中啟用視覺樣式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM