文本框似乎缺少编辑命令的绑定API

tmp00000 UID.995403
2016-12-15 发表

在WPF里面可以把TextBox的上下文菜单里面的功能绑定到其它地方,效果类似于Office的Ribbon菜单中的复制,粘贴,撤销,重做之类的操作。UWP算上预览版本已经公开差不多两年了,但是文本框在现在(14393)还是缺少这些功能。 咱们是不是应该一起反馈一波?

敬告:
为防止不可控的内容风险,本站已关闭新用户注册,新贴的发表及评论;
你现在看到的内容只是互联网用户曾经发表的言论快照,仅用于老用户留存纪念,且仅与科技行业相关,全部内容不代表本站观点及立场;
本站重新开放前已针对包括用户隐私、版权保护、信息安全、国家政策在内的各种互联网法律法规要求,执行了隐患内容的自查、屏蔽和删除;
本站目前所属个人主体,未有任何盈利安排与计划,且与原WFUN.COM所属公司不存在任何关联关系;
如果本帖内容或者相关资源侵犯到您的合法权益,或者您认为存在问题,那么请您务必点此举报或投诉!
全部回复:
vbfool UID.352791
2016-12-16 回复

这个吧,SL的时候就没了,我倒是觉得自己写个扩展就可以了。
毕竟XAML系的扩展能力足够强。

tmp00000 UID.995403
2016-12-16 回复

Quotevbfool 发表于 2016-12-16 09:05
这个吧,SL的时候就没了,我倒是觉得自己写个扩展就可以了。
毕竟XAML系的扩展能力足够强。 ...


有些东西自己实现会比用命令绑定多出很多开销,比如撤销和重做。同一条历史记录会在内存里面放两份,而且得考虑复杂的同步问题。粘贴也是个问题,因为用代码模拟粘贴不会触发Paste事件,会与之前写的某些代码不兼容。

vbfool UID.352791
2016-12-16 回复

Quote***链接停止解析***
有些东西自己实现会比用命令绑定多出很多开销,比如撤销和重做。同一条历史记录会在内存里面放两份,而且 ...


我的错,没仔细看,感情微软根本就没把方法放出来啊,不放出来怎么折腾也没招。

tmp00000 UID.995403
2016-12-16 回复

Quotevbfool 发表于 2016-12-16 16:49
我的错,没仔细看,感情微软根本就没把方法放出来啊,不放出来怎么折腾也没招。 ...


我现在只想出一个合理的方案,就是用WebView嵌套html页面。那里面的文本框可以用js模拟这些命令。

vbfool UID.352791
2016-12-16 回复

Quote***链接停止解析***
我现在只想出一个合理的方案,就是用WebView嵌套html页面。那里面的文本框可以用js模拟这些命令。 ...


嗯,但是这招也很恶心就是了,因为WebView这东西,好像是浮在最上方的。希望不会遮住你的其它控件,最好的办法大概是整个页面都是WebView吧?

tmp00000 UID.995403
2016-12-16 使用 Lumia 1520 回复

Quotevbfool 发表于 2016-12-16 16:57
嗯,但是这招也很恶心就是了,因为WebView这东西,好像是浮在最上方的。希望不会遮住你的其它控件,最好 ...


我现在的设计是带有磨砂玻璃效果的 “悬浮窗口” 在文本框上。明天考完英语试一下WebView能遮挡成什么样。

tmp00000 UID.995403
2016-12-19 回复

本帖最后由 tmp00000 于 2016-12-19 19:55 编辑

Quotevbfool 发表于 2016-12-16 16:57 嗯,但是这招也很恶心就是了,因为WebView这东西,好像是浮在最上方的。希望不会遮住你的其它控件,最好 ...
不是浮出控件。看图。 那个磨砂玻璃工具箱是个xaml控件。
***图片停止解析***

vbfool UID.352791
2016-12-19 回复

Quote***链接停止解析***
不是浮出控件。看图。
那个磨砂玻璃工具箱是个xaml控件。
[qpic]94719ae0-8ea2-4cbc-bfc7-4f2a21ac372c.PNG[ ...


那还凑合啊,居然不是和WPF一样的浮出最上了。

tmp00000 UID.995403
2016-12-19 回复

Quotevbfool 发表于 2016-12-19 21:30 那还凑合啊,居然不是和WPF一样的浮出最上了。
我之前没写过winjs与外面的代码交互,只写过简单的xaml项目内嵌winjs项目。当时我写这个用来试验vb14的字符串内插和字符串内换行。现在的问题是我不知道怎样用js接收xaml控件的指令。

tmp00000 UID.995403
2016-12-19 回复

Quotevbfool 发表于 2016-12-19 21:30
那还凑合啊,居然不是和WPF一样的浮出最上了。


我这几天试试ajax行不。要是可以,我就把SignalR移植一部分试试。

vbfool UID.352791
2016-12-20 回复

Quote***链接停止解析***
我之前没写过winjs与外面的代码交互,只写过简单的xaml项目内嵌winjs项目。当时我写这个用来试验vb14的字符 ...


WebView有个ScriptNotify事件,可以让js通知到C#上,AddWebAllowedObject方法,可以注册一个C#的对象进页面全局,让js访问。
InvokeScript可以直接执行页面中的js。
通信方式还是有的。

tmp00000 UID.995403
2016-12-20 回复

Quotevbfool 发表于 2016-12-20 11:00 WebView有个ScriptNotify事件,可以让js通知到C#上,AddWebAllowedObject方法,可以注册一个C#的对象进页 ...
这确实是个办法。我试了一下,html 的 textarea 自带的撤销操作并不好, 所以我还是要再研究一下textbox再决定到底怎么实现。不过它比XAML的textbox好的地方是它可以容纳内容较长的文本。XAML的textbox内容长度超过768kb就出现各种奇怪的bug(我之前发过帖子)。 html 的 textaera 尽管也很卡,但可以保证操作可以正常进行。

tmp00000 UID.995403
2016-12-20 回复

Quotevbfool 发表于 2016-12-20 11:00
WebView有个ScriptNotify事件,可以让js通知到C#上,AddWebAllowedObject方法,可以注册一个C#的对象进页 ...


我刚才把你提到的交互方式看了一下,确实不用 Ajax 也可以正常与浏览器里面的内容通信。花点心思就可以写出类似于 asp.net mvc 的东西。不过这个跟开发网站不一样,不需要过多地在前端保存状态。这样的话似乎按照 web form 的方式写框架用起来更方便。前端是可以像 mvc 一样动态生成的网页,背后的代码是类似于 web form 的页面类,用来减少 js 的代码量, 控制器还是 mvc 的控制器,视图模型还是自己写,模型还是让 Entity Framework 处理。

tmp00000 UID.995403
2016-12-20 回复

本帖最后由 tmp00000 于 2016-12-20 13:39 编辑

Quotevbfool 发表于 2016-12-20 11:00 WebView有个ScriptNotify事件,可以让js通知到C#上,AddWebAllowedObject方法,可以注册一个C#的对象进页 ...
前端我打算这样写。c#不能直接在字符串里面敲回车,所以这个办法是vb专属的。 ***图片停止解析*** 更正:这个办法同时适用于c#和vb。在c#中给字符串前加@可以使用与vb近似的转义规则,而且与$不会冲突。

tmp00000 UID.995403
2016-12-20 回复

Quotevbfool 发表于 2016-12-20 11:00
WebView有个ScriptNotify事件,可以让js通知到C#上,AddWebAllowedObject方法,可以注册一个C#的对象进页 ...


我发现个问题。公开给前端的 windows 运行时 对象不会自动产生 *.d.ts 文件。这样写js的时候容易犯错误。

vbfool UID.352791
2016-12-20 回复

Quote***链接停止解析***
前端我打算这样写。c#不能直接在字符串里面敲回车,所以这个办法是vb专属的。
[qpic]d853be79-315c-4d2e- ...


可以的,在字符串引号前边加@就可以了

类似于
@"Text
Box"

tmp00000 UID.995403
2016-12-20 使用 Lumia 1520 回复

Quotevbfool 发表于 2016-12-20 12:17
可以的,在字符串引号前边加@就可以了

类似于


那字符串内插怎么用?加了***链接停止解析*** 就会导致字符串内所有转义无效。

vbfool UID.352791
2016-12-20 回复

Quote***链接停止解析***
那字符串内插怎么用?加了@ 就会导致字符串内所有转义无效。


如果是格式字符串倒是可以写$@"";这样。但是其它转义,估计还真的不好说了

vbfool UID.352791
2016-12-20 回复

这样写似乎没问题
[mw_shl_code=csharp,true]string s1 = $@"
a1\a""bcdefgh""
";[/mw_shl_code]

tmp00000 UID.995403
2016-12-20 回复

Quotevbfool 发表于 2016-12-20 13:20
这样写似乎没问题
[mw_shl_code=csharp,true]string s1 = $@“
a1\a““bcdefgh““


非常感谢。我确实孤陋寡闻了。我之前一直以为@和$不能一起用。
***图片停止解析***

vbfool UID.352791
2016-12-21 回复

本帖最后由 vbfool 于 2016-12-21 14:29 编辑

@tmp00000
告诉你一个事情,我们好像错怪微软了,RichEditBox里剪切复制粘贴命令都是有的。
本身不在控件上,而是在Document里。
[mw_shl_code=csharp,true]Rtf1.Document.Selection.Cut();[/mw_shl_code]
这样

tmp00000 UID.995403
2016-12-21 回复

Quotevbfool 发表于 2016-12-21 13:59
@tmp00000
告诉你一个事情,我们好像错怪微软了,RichEditBox里剪切复制粘贴命令都是有的。
本身不在控件 ...


我回头有时间就看看。我们期末考坑爹的webform,我得把老师上课讲的东西做成代码示例发给同学,用来换取其它科目的复习资料。

wcavell UID.34926
2016-12-21 回复

***链接停止解析***
配合这种控件也是不错的

tmp00000 UID.995403
2016-12-21 回复

Quotewcavell 发表于 2016-12-21 20:07
RadialMenu
配合这种控件也是不错的


这个控件看起来不错

本站使用Golang构建,点击此处申请开源鄂ICP备18029942号-4联系站长投诉/举报