求wpf代码,鼠标移上列表某列单元格时,用tooltips展示与该单元格数据相关的一个列表(数据是个一集合)

wpf代码,鼠标移动到datagrid某个单元格上时,怎样用tooltips或其他方式显示一个列表数据(悬浮窗状态),鼠标移开后悬浮窗列表消失?

这有两种做法,都很简单,我跟你说下思路。
第一种做法:Datagrid绑定的是数据实体集合,每一行的dataContext是一个数据实体对象。这个对象里可以加个List<>属性,用来存放悬浮窗里展示的列表。然后可以给datagridrow或者datagridcell上添加MouseMove事件,后台获取到datagridrow或cell的datacontext。然后刷新tooltips里listbox的Itemsouce即可。
第二种方法:无需改变实体对象结构。在后台定义一个全局的用来存放悬浮窗显示列表List<>对象,在第一种方法的MouseMove事件里获取datacontext。然后根据这个datacontext(其实就是实体对象)的id或者其他什么值,去动态刷新全局的List<>。然后再把这个list<>绑定到tooltips里。
第一种方法是写死的(tooltip展示的list数据都事先加载好),第二种方法是动态的,比较省资源。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-23
  <DataGrid x:Name="dataGrid" ItemsSource="{Binding}">
      <DataGrid.CellStyle>
          <Style TargetType="DataGridCell">
              <Setter Property="ToolTip">
                  <Setter.Value>
                      <ListBox ItemsSource="{Binding TestList}"></ListBox>
                  </Setter.Value>
              </Setter>
          </Style>
      </DataGrid.CellStyle>
  </DataGrid>

后台绑定:

this.Loaded += delegate
{
    List<Demo> listDemo = new List<Demo>();
    listDemo.Add(new Demo() { ID = 1, Name = "张三", Remark = "张三", TestList = new List<string>() { "A1", "B1", "C1" } });
    listDemo.Add(new Demo() { ID = 2, Name = "李四", Remark = "李四", TestList = new List<string>() { "A2", "B2", "C2" } });
    listDemo.Add(new Demo() { ID = 3, Name = "王五", Remark = "王五", TestList = new List<string>() { "A3", "B3", "C3" } });
    dataGrid.DataContext = listDemo;
};

public class Demo
    {
        public int ID { get; set; }

        public string Name { get; set; }

        public string Remark { get; set; }

        public List<string> TestList { get; set; }
    }

本回答被提问者采纳

求wpf代码,鼠标移上列表某列单元格时,用tooltips展示与该单元格数据相关...
第一种做法:Datagrid绑定的是数据实体集合,每一行的dataContext是一个数据实体对象。这个对象里可以加个List<>属性,用来存放悬浮窗里展示的列表。然后可以给datagridrow或者datagridcell上添加MouseMove事件,后台获取到datagridrow或cell的datacontext。然后刷新tooltips里listbox的Itemsouce即可。第二种方法:无...

相似回答