多字段表单设置可见性表达式(编辑字典),多条件不生效

使用问题 · 491 次浏览
Artrime 创建于 2023-05-05 10:54

多字段表单设置可见性表达式,如果只有都是可以生效的,但是如下表达式不会生效


乐昂岚 2023-05-05 11:20 :

试试

$=!({系统环境}="-"||{系统环境}="")

Artrime 回复 乐昂岚 2023-05-05 11:23 :

哦!逻辑上好像没问题,感谢!!

Artrime 回复 乐昂岚 2023-05-05 11:25 :

感谢,没问题了🤣我脑子好像卡住了一样

回复内容
CL 2023-05-05 10:58
#1

这个逻辑上有问题,两个条件必然有一个是真的,你想,一个数必然不是3或者不是4。 说说想实现啥目的

Artrime 回复 CL 2023-05-05 11:14 :

大概就是,$= !new List<string>(){ "", "-" }.Contains({系统环境}) 的逻辑表达式版本🤣

CL 回复 Artrime 2023-05-05 11:18 :

这个也看不太懂,直接说中文吧😂

Artrime 回复 CL 2023-05-05 11:20 :

我想让【系统环境】控制系统环境详细信息的可见性,只有系统环境在为【空白】或【-】的时候,系统环境详细才不显示,其它情况都显示

Artrime 回复 CL 2023-05-05 11:53 :

大佬,还有一个问题,可选值那个地方,如果设置如下,会显示【未将对象引用设置到对象的实例】但是火绒版本本身是一个key($=_context.GetRootContext().GetVarValue("变量名")的方法也访问不到)

$={火绒版本}== "中心&终端"?

new List<string >() {

    "企业版 1.0",
    "企业版 2.0",
}:
new List<string >() {
    "企业版 1.0",
    "企业版 2.0",
    "个人版 5.0",
}
Artrime 回复 CL 2023-05-05 12:07 :

$=(_context.GetRootContext().GetVarValue("dictVar") as Dictionary<string,string>)["key"]也不行

CL 回复 Artrime 2023-05-05 12:12 :

Quicker里的词典是 Dictionary<string, object> 这个类型。 未将对象引用设置到对象的实例,是不是因为词典没有初始化,里面之前还没有这个? 我也有些不是很确定,没太搞过这么复杂的😂

Artrime 回复 CL 2023-05-05 12:17 :

字典用的是【多字段表单】的字典,想法是,根据前边的字段动态设置可选值,但是好像没办法像可见性表达式一样直接用{key},

Artrime 回复 CL 2023-05-05 12:22 :

拿不到字典的值应该就是因为没初始化。。那这个办法就不行了😭

有办法在可选值里边像可见性表达式一样直接用{key}吗

CL 回复 Artrime 2023-05-05 12:30 :

在词典默认值那里预先初始化一下呢?

或者,获取词典对象后,判断一下是不是存在Key:  {dict}.ContainsKey("xxx")

Artrime 回复 CL 2023-05-05 12:38 :

有个问题是,在设置工作模式为编辑【编辑词典数据】时,在可选值里用:{标识符},无法得到词典对应key的value也不能得到外边的值,唯一的方法是_context.GetRootContext().GetVarValue("变量名")🥲

Artrime 回复 CL 2023-05-05 12:44 :

词典默认值里预先初始化好像也不行,我试了下,还是会报同样的错误,而且可能是因为一开始就出错了,所以调试运行也运行不了,这样也看不出来具体是哪个地方出现了问题🥲

CL 回复 Artrime 2023-05-05 13:22 :

如果这些出错的部分能提取一个简单的动作,可以分享我试试看看,如果整体太复杂了,我也看不懂 😂

CL 回复 Artrime 2023-05-05 15:39 :

表达式改成这样似乎没有报错了:

$=
    var dict = _context.GetRootContext().GetVarValue("dictVar");

//if (dict == null){
//    return new  string[]{"aaa"};
//}

var dictValue = dict as Dictionary<string,Object>;

//if (dictValue == null){
//    return new  string[]{"bbbb"};
//}


if (dictValue.ContainsKey("火绒版本"))
{
    return new List<string >() {
        "企业版 1.0",
        "企业版 2.0",
    };
}else{
    return new  List<string >() {
        "企业版 1.0",
        "企业版 2.0",
        "个人版 5.0",
    };
}

之前的有语法错误。 ? 前面应该是布尔值


Artrime 回复 CL 2023-05-05 16:19 :

🤣之前?前边的个==来着,后来忘加了,但是这样的话还是没有办法值呀,dictValue.ContainsKey("火绒版本")值一直会是false

Artrime 最后更新于 2023-05-05 16:22
CL 回复 Artrime 2023-05-05 16:32 :

我用刚才上面的代码测试是有值的,选项有2个。

Artrime 回复 CL 2023-05-05 16:36 :

哦哦,看错了🥲我的意思是还是没办法通过dictValue["火绒版本"]得到值

zryan 回复 Artrime 2023-05-05 19:18 :

实测,直接用 {火绒版本} 就可以拿到字典中的值

Artrime 回复 zryan 2023-05-06 10:01 :


只能拿到预定义值,而不能跟随值变化🥲

Artrime 最后更新于 2023-05-06 10:02
CL 回复 Artrime 2023-05-06 10:03 :

预定义值要去掉,不然它有筛选作用会让选项显示不了。

zryan 回复 Artrime 2023-05-06 10:15 :

是的,目前来说变化是做不到的

Artrime 回复 CL 2023-05-06 10:16 :

预定义值去掉会显示$={变量}


Artrime 回复 zryan 2023-05-06 10:21 :

那写xaml是不是可以做到呢,虽然我目前还不会。。🥲

Artrime 回复 zryan 2023-05-06 10:27 :

比较奇怪的一点是,可见性表达式和可选值的表现是不同的😭

CL 回复 CL 2023-05-06 10:41 :

我理解错“预定义值”的意思了。 还是尽量不要整太复杂的动作了😂

zryan 回复 Artrime 2023-05-06 12:39 :

可见性表达式貌似只支持动态绑定 下拉选择和检查框 的选项,其它的应该也是不行的。估计它的绑定是做了特殊处理的😂。其它的数据可能都是显示窗口前一次性加载的,所以不能动态改变。


你说的xaml是指的啥?自定义窗口吗?如果是写自定义窗口,那这些都不是问题,想怎么实现都可以🤔。

Artrime 回复 CL 2023-05-06 16:04 :

我用一种比较迂回的方式解决了,不过可见性表达式和可选值的表现是不同的吗。。这是不是Bug呀

Artrime 回复 zryan 2023-05-06 16:04 :

等我学学wpf

Artrime 回复 CL 2023-05-06 16:11 :

大佬,还有个问题,

我用string.Split(new char[]{';',';'})的方式想用中英文的分号分隔字符串,但是这么写的话只用中文分号是不生效的,要加上英文分号才行,这是为什么呀

zryan 回复 Artrime 2023-05-06 16:20 :

有更多问题的话,比较建议开一个新的帖子,这个评论堆得太长了,其他人很难看到你的问题并解答。

崔大平常处理软件事宜也很忙,代码相关问题可能没有那么多时间回复😂

Artrime 回复 zryan 2023-05-06 16:21 :

好的好的👌

回复主贴