所以我正在使用 FileSystemWatcher 填充和更新播放列表。我想复制Windows Explorer的许多功能,最重要的是:
*内联重命名
*慢单击以重命名

我正在做这件事很麻烦,所以我想,也许有一种比重新实现轮子更容易的方法?也许我可以以某种方式将Windows Explorer窗口作为控制?

有帮助吗?

解决方案

在您的应用程序中托管真实的Windows Explorer窗口是可能的,但充满了危险:XP vs Vista vs Win7中的技术有所不同,您将处理各种低级的东西。我强烈建议您不尝试。

我认为您最好的选择是:

  1. 如果可以轻松适应您的需求,或
  2. 编码您自己的功能,或者如果您非常勇敢:
  3. 启动一个单独的Explorer窗口,可选地使用代码,试图强制其位置和大小在您的应用程序上(这也很难...)

关于内联重命名功能的注释

内联重命名和慢速双击重命名功能确实很容易实现。

在您的视图模型中添加:

  • 一个“ newname”字符串依赖性Property
  • 带有属性ChangedCallback的“重命名”布尔依赖性。当“重命名”成真时,请将名称复制到newname。当它错误时,如果newname!=名称将文件重命名为“更新名称”。

在您的DataTemplate中,添加了“重命名”上的触发器,该触发器替换您的文本框架绑定到“名称”的文本框绑定到“ newname”。

添加以下事件处理程序: *键盘事件:如果按下F2切换重命名。如果按下Enter并重命名,请设置重命名= false。如果按下ESC并将复制名称重命名为newname并将重命名= false。 * LostFocus事件:设置重命名= false * selectionChanged事件在容器上:记录最后选择更改的记录时间戳。 * Mousedown事件:如果左键单击并更改了选择> 0.5秒前,请设置重命名= true

Explorer视图的许多其他功能也很容易实现,例如分组和多个列。

希望这可以帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top