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