0

我有一个FileInfoDependencyProperty 类型,在 中PropertyChangedCallback,我不能强制DependencyObject转换为FileInfo类型。

    public static readonly DependencyProperty TargetFileProperty =
        DependencyProperty.Register("TargetFile", typeof(System.IO.FileInfo), typeof(FileSelectGroup), new PropertyMetadata(propertyChangedCallback: new PropertyChangedCallback());

    private PropertyChangedCallback OnTargetFileChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var f = (System.IO.FileInfo)d; // THIS LINE GIVES ERROR BELOW
    }

错误是:

无法将类型“System.Windows.DependencyObject”转换为“System.IO.FileInfo”

我想也许我遗漏了一些明显的东西(我可能是),但微软这个答案似乎同意我在做大致正确的事情。

4

1 回答 1

1

d指定义依赖属性的控件,即FileSelectGroup.

您应该能够强制e.NewValue转换为 aSystem.IO.FileInfo以获取依赖属性的新值:

private PropertyChangedCallback OnTargetFileChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    var f = e.NewValue as System.IO.FileInfo;
    if (f != null)
    {
        //...
    }
}

或者,您可以强制d转换FileSelectGroup并访问TargetFile控件的属性:

private PropertyChangedCallback OnTargetFileChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
    var ctrl = d as FileSelectGroup;
    if (ctrl != null)
    {
        System.IO.FileInfo f = ctrl.TargetFile;
        if (f != null)
        {

        }
    }
}
于 2018-04-19T14:08:47.593 回答