乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 163|回复: 7

Newby:用字典填充的WPF表单组合框string,SmallLayerObject & gt

[复制链接]

3

主题

8

帖子

2

银币

初来乍到

Rank: 1

铜币
20
发表于 2021-2-7 17:44:16 | 显示全部楼层 |阅读模式
我来自VBA,编程能力超群,但毫无挫折感。我被困住了,所以我寻求帮助
我有一个WPF表单,其中有一个填充了层名称的组合框。在我的设计中,层的选择是可选的,因此项[0]是一条消息“
”。然后,从第1项开始,组合框将填充图层名称
Transaction trans=DrawingDatabase.TransactionManager.StartTransaction()
SortedList
LayersSorted=new-SortedList
()
LayerTable:lyrTbl=trans.GetObject(DrawingDatabase.LayerTableId,OpenMode.ForRead)作为LayerTable
foreach(ObjectId:lyritbl中的lyrId)
{
lyrTblRec=trans。GetObject(lyrId,OpenMode.ForRead)作为LayerTableRecord
lyrObj=new smallayerbj
{
BaseId=lyrId,
isfreeze=lyrTblRec.isfreezed,
Name=lyrTblRec.Name
}
LayersSorted.Add(lyrTblRec.Name,lyrObj)
}
Dictionary
layerDisct=新字典
{
//defMessage是一个字符串“

{defMessage,新的smallayerbj{Name=null,BaseId=ObjectId.null,isfreeze=false}
}
foreach(KeyValuePair
layerName在layerSorted中)
{
LayerDict.Add(layerName.Key,layerName.Value)
}
返回LayerDict
它仍然需要关注,但它可以工作。从长远来看,这将使我能够不费吹灰之力地扩展SmallayerRobj
现在我的数据用这个XAML语法绑定:ItemsSource=“{Binding}”DisplayMemberPath=“Key”SelectedValuePath=“Value.BaseId”。我不确定SelectedValuePath=“Value.BaseId”是否正常工作以及它应该做什么,但DisplayMemberPath=“Key”正常工作,并且组合框中填充了LayerName
现在我有了这个返回值
var lyr=win.cboLayers.SelectedItem
而lyr变量实际上是一个泛型变量。KeyValuePair
我的问题是,我不知道如何读取存储在值部分中的ObjectId,该部分是一个包含三项的SmallLayerObj。。TryGetValue?使用索引器?我没有线索,甚至智能感知也不提供帮助。我够不着…

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2021-2-8 01:38:24 | 显示全部楼层
嗨,
看起来你让事情变得更复杂
回复

使用道具 举报

3

主题

8

帖子

2

银币

初来乍到

Rank: 1

铜币
20
发表于 2021-2-8 03:00:30 | 显示全部楼层
嗨,Gile,在我实现了你的简化之后,我会给你一个大大的感谢。首先,我的第一个问题。此处的    var lyrId = win . cbolayers . selecteditem . value . baseid;。
不起作用,它说“对象”不包含“值”的定义,是不是我把它弄得太复杂了,以至于混淆了Value属性?我认为我需要转换为KeyValuePair以获得访问权限。    var VarSelLyr = win . cbooutputl . selecteditem;。

Dictionary DictLyr = null。
KeyValuePair KVPLyr。
SmallLayerObj LyrObj = null。

if (VarSelLyr是字典 == true)。
{。
DictLyr = (Dictionary)VarSelLyr。
//下一个失败:IntelliSense写入。
//字典不包含“value”的定义,。
if (DictLyr,值为SmallLayerObj == true)。
ly robj =(SmallLayerObj)KVPLyr,价值;。
}。

if (VarSelLyr是KeyValuePair == true)。
{。
KVPLyr =(key value pair )VarSelLyr。
//这行得通。
if (KVPLyr,值为SmallLayerObj == true)。
ly robj =(SmallLayerObj)KVPLyr,价值;。
}。

acDoc,editor . write message(" Name value = "+lyr obj,name . ToString());。
奇怪!但是你给了我一个更好的解决方案,谢谢!!。
回复

使用道具 举报

3

主题

8

帖子

2

银币

初来乍到

Rank: 1

铜币
20
发表于 2021-2-8 03:50:55 | 显示全部楼层
这样,层的列表是无序的。你是怎么解决的?
PS:我同意,不需要留言。
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2021-2-8 05:11:42 | 显示全部楼层
试试这个:



var lyrId =((key value pair
)win . cbolayers . selecteditem). value . baseid;
回复

使用道具 举报

3

主题

8

帖子

2

银币

初来乍到

Rank: 1

铜币
20
发表于 2021-2-8 05:35:29 | 显示全部楼层
嗨!
@gile。谢谢!同时我implem
回复

使用道具 举报

15

主题

687

帖子

169

银币

中流砥柱

Rank: 25

铜币
582
发表于 2021-2-8 05:48:32 | 显示全部楼层
强IEnumerable
扩展方法
回复

使用道具 举报

3

主题

8

帖子

2

银币

初来乍到

Rank: 1

铜币
20
发表于 2021-2-8 06:18:11 | 显示全部楼层
感谢您的帮助!
这将是一段复杂的友谊。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-12-18 10:20 , Processed in 0.322377 second(s), 80 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表