我在 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两者都为假,但ComctlSupportsVisualStylesWinforms 托管为真,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。
有什么办法吗?