复制WPF中Windows Explorer文件夹UI功能的最佳方法是什么?
-
20-09-2019 - |
题
所以我正在使用 FileSystemWatcher
填充和更新播放列表。我想复制Windows Explorer的许多功能,最重要的是:
*内联重命名
*慢单击以重命名
我正在做这件事很麻烦,所以我想,也许有一种比重新实现轮子更容易的方法?也许我可以以某种方式将Windows Explorer窗口作为控制?
解决方案
在您的应用程序中托管真实的Windows Explorer窗口是可能的,但充满了危险:XP vs Vista vs Win7中的技术有所不同,您将处理各种低级的东西。我强烈建议您不尝试。
我认为您最好的选择是:
- 如果可以轻松适应您的需求,或
- 编码您自己的功能,或者如果您非常勇敢:
- 启动一个单独的Explorer窗口,可选地使用代码,试图强制其位置和大小在您的应用程序上(这也很难...)
关于内联重命名功能的注释
内联重命名和慢速双击重命名功能确实很容易实现。
在您的视图模型中添加:
- 一个“ newname”字符串依赖性Property
- 带有属性ChangedCallback的“重命名”布尔依赖性。当“重命名”成真时,请将名称复制到newname。当它错误时,如果newname!=名称将文件重命名为“更新名称”。
在您的DataTemplate中,添加了“重命名”上的触发器,该触发器替换您的文本框架绑定到“名称”的文本框绑定到“ newname”。
添加以下事件处理程序: *键盘事件:如果按下F2切换重命名。如果按下Enter并重命名,请设置重命名= false。如果按下ESC并将复制名称重命名为newname并将重命名= false。 * LostFocus事件:设置重命名= false * selectionChanged事件在容器上:记录最后选择更改的记录时间戳。 * Mousedown事件:如果左键单击并更改了选择> 0.5秒前,请设置重命名= true
Explorer视图的许多其他功能也很容易实现,例如分组和多个列。
希望这可以帮助。
不隶属于 StackOverflow