0

我正在为工作中的用户复制“触摸”命令的 GUI 版本。

我有一个DataGrid绑定到List<FileInfo>对象的 WPF。

当用户更改文件的 CreationTime(例如)时,绑定会自动更新文件,一切都很好。

直到您尝试更改您无权更改的文件。数据绑定将异常抛出到输出窗口,但我想捕获异常并更新状态栏消息说它失败了。

目前,我通过捕获CellEditEnding事件并再次手动应用更改来实现这一点,只是为了捕获代码中的异常。这不是问题,但我想知道如何在不尝试两次更改日期的情况下做到这一点?

4

1 回答 1

0

处理BeginningEdit事件以确保文件可访问,如果文件不可访问Cancel,则将传递的属性DataGridBeginningEditEventArgs设置为。true

要确定您是否对某个路径具有写入权限,请使用以下命令:

using System.Security.Permissions;

...
public void dataGrid_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
{
    FileIOPermission permission = new FileIOPermission(FileIOPermissionAccess.Write, path);
    try
    {
        permission.Demand();            
    }
    catch
    {
        e.Cancel = true;
    }
}
于 2013-05-09T02:22:42.963 回答