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