繁体   English   中英

在WPF托管的ListView中启用组

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM