2017-08-22 23 views
0

我在WPF應用程序中託管了一箇舊的Winforms控件。 控件利用裏面的System.Windows.Forms.ListView,這個ListView使用組功能。在由WPF承載的ListView中啓用組

問題是,這個控件由WPF託管時不顯示組。 我手動比較了WinView應用程序和WPF應用程序託管ListView時的屬性。 對於兩個ListViews ShowGroups屬性都是如此。

但是,有一個屬性叫做GroupsEnabled,當控件託管在Winforms中時屬性爲true,當它在WPF中託管時屬性爲false。 我發現定義here

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

VirtualMode是假的兩個,但ComctlSupportsVisualStyles是舉辦和虛假的WPF應用程序的WinForms如此。
來自同一來源的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
有什麼辦法可以做到嗎?

回答

-1

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

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

的的WinForms ListView控件除非啓用視覺樣式(在技術上,除非ComCtrl32庫6版本使用不支持羣體,這是與支持視覺樣式所需的版本相同)。

另請參閱:How to: Enable Visual Styles in a Hybrid Application