我在 WPF 应用程序中托管了一个旧的 Winforms 控件。控件利用了System.Windows.Forms.ListView
内部,而这个 ListView 使用了 Groups 功能。
问题是当由 WPF 托管时,此控件不显示组。当 ListView 由 Winforms 应用程序和 WPF 应用程序托管时,我已经手动比较了它的属性。对于这两个 ListViewsShowGroups
属性都是 true。
但是,有一个名为的属性GroupsEnabled
,当控件托管在 Winforms 中时它是 true,而当它托管在 WPF 中时它是 false。我在这里找到了定义:
internal bool GroupsEnabled
{
get {
return this.ShowGroups && groups != null && groups.Count > 0 && ComctlSupportsVisualStyles && !VirtualMode;
}
}
VirtualMode
两者都为假,但ComctlSupportsVisualStyles
Winforms 托管为真,WPF 应用程序为假。来自同一来源的代码
:ComctlSupportsVisualStyles
private bool ComctlSupportsVisualStyles {
get {
if(!listViewState[LISTVIEWSTATE_comctlSupportsVisualStylesTested])
{
listViewState[LISTVIEWSTATE_comctlSupportsVisualStylesTested] = true;
listViewState[LISTVIEWSTATE_comctlSupportsVisualStyles] = Application.ComCtlSupportsVisualStyles;
}
return listViewState[LISTVIEWSTATE_comctlSupportsVisualStyles];
}
}
我想我需要以Application.ComCtlSupportsVisualStyles
某种方式在我的 WPF 代码中进行设置。
这一定是System.Windows.Forms.Application
而不是System.Windows.Application
。
有什么办法吗?