ItemsControl 内部列表中的 DisplayMemberPathProperty

问题描述 投票:0回答:0

我有一个这样的列表

团体 ID 姓名
美国 1 纽约 纽约
美国 2 新泽西州 新泽西州
英国 3 伦敦
英国 4 曼彻斯特

我需要在另一个菜单中制作一个菜单

外面的菜单应该有两个选项:

USA & UK

子菜单应显示城市名称

所以首先我将列表分组如下:

Dim KVPlst As New List(Of KeyValuePair(Of String, List(Of KeyValuePair(Of Integer, String))))

'Making a grouped list from the whole list
Dim groupedList = lst.GroupByDynamic({pl.GroupField}.ToList).ToList

For Each grp In groupedList
   Dim key = GetObjProperty(grp, "Key")
   Dim keyName = DirectCast(key, ValueTuple(Of String)).Item1
   Dim grplist = grp.Cast(Of Object).ToList.Select(Function(x) KVP(CInt(GetObjProperty(x, "ID")), GetObjProperty(x, "CityName").ToString)).ToList
   KVPlst.Add(KVP(keyName, grplist))
Next
ItemsControl.ItemsSource = KVPlst
ItemsControl.DisplayMemberPath = "Key"
Dim stl = New Style
stl.Setters.Add(New Setter With {.[Property] = MenuItem.ItemsSourceProperty, .Value = New Binding("Value")})
stl.Setters.Add(New Setter With {.[Property] = MenuItem.DisplayMemberPathProperty, .Value = "Value"})
stl.Setters.Add(New Setter With {.[Property] = MenuItem.ItemContainerStyleProperty, .Value = clickEvent}) 
ItemsControl.ItemContainerStyle = stl

List(Of KeyValuePair(Of String, List(Of KeyValuePair(Of Integer, String))))
将组列表显示为
Key = Group name
Value = a list of cities with their ID

然后设置

ItemsControl.ItemsSource = list
&
ItemsControl.DisplayMemberPath = "Key"
,

ItemsControl.ItemContainerStyle
里面我添加了一个新的
Style
:“一个
Setter
代表
ItemsSourceProperty
绑定到列表的
"Value"
,一个
Setter
代表
DisplayMemberPathProperty
"Value"
(应该显示
City Name
)“

我想显示第一(外)列表的

Key
和第二(内)列表的
Value

所以我设置

ItemsControl.DisplayMemberPath = "Key"
DisplayMemberPathProperty = "Value"
如上。

但是设置好后

ItemsControl.DisplayMemberPath = "Key"
,

带有

Setter
DisplayMemberPathProperty = "Value"
没有效果,它显示
Key
.

谢谢。

wpf itemscontrol picklist
© www.soinside.com 2019 - 2024. All rights reserved.