Dud*_*udu 5 .net compositecollection
考虑代码:
\n\nObservableCollection<string> cities = new ObservableCollection<string>();\nObservableCollection<string> states = new ObservableCollection<string>();\n\nListBox list;\n\ncities.Add("Frederick");\ncities.Add("Germantown");\ncities.Add("Arlington");\ncities.Add("Burbank");\ncities.Add("Newton");\ncities.Add("Watertown");\ncities.Add("Pasadena");\n\nstates.Add("Maryland");\nstates.Add("Virginia");\nstates.Add("California");\nstates.Add("Nevada");\nstates.Add("Ohio");\n\nCompositeCollection cmpc = new CompositeCollection();\nCollectionContainer cc1 = new CollectionContainer();\nCollectionContainer cc2 = new CollectionContainer();\n\ncc1.Collection = cities;\ncc2.Collection = states;\n\ncmpc.Add(cc1);\ncmpc.Add(cc2);\n\nlist.ItemsSource = cmpc;\n\nforeach(var itm in cmpc)\n{\n // itm is CollectionContainer and there are only two itm\xe2\x80\x99s\n // I need the strings\n}\nRun Code Online (Sandbox Code Playgroud)\n\n虽然列表在 GUI 上显示了正确的数据
\n\n我需要这些数据(不引用列表框)但我没有得到它
\n您应该从 cmpc 项目中提取数据并将它们设置为列表的数据源。ItemsSource 不会理解您需要将项目的内部项目设置为数据源
编辑
你可以使用这个方法
List<string> GetData(CompositeCollection cmpc)
{
List<string> allStrings = new List<string>();
foreach (var item in cmpc)
{
allStrings.AddRange(item.OfType<string>());
}
return allStrings;
}
Run Code Online (Sandbox Code Playgroud)
并设置数据源
list.ItemsSource = GetData(cmpc);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1545 次 |
| 最近记录: |