WPF:如何在应用值转换器后获取 SelectedItem?

WPF: How to get SelectedItem after applying value converter?

我可以控制绑定图像的位置。我的视图模型中的代码如下所示:

public List<IDocument> SelectedEventPhotoList
{
    get { return _selectedEventPhotoList; }
    set
    {
        if (Equals(value, _selectedEventPhotoList))
            return;

        _selectedEventPhotoList = value;
        RaisePropertyChanged(() => SelectedEventPhotoList);
    }
}

public IDocument SelectedEventPhoto
{
    get { return _selectedEventPhoto; }
    set
    {
        if (Equals(value, _selectedEventPhoto))
            return;

        _selectedEventPhoto = value;
        RaisePropertyChanged(() => SelectedEventPhoto);
    }
}

绑定如下所示:

<ListView Grid.Row="0"
            ItemsSource="{Binding SelectedEventPhotoList, Converter={StaticResource PathToFileConverter}}"
            SelectedItem="{Binding SelectedEventPhoto}"

如您所见,我有一个要绑定到 ItemsSource 的 IDocument 类型列表,而 SelectedItem 是 IDocument 类型。但是,图像的 Source 属性 是字符串类型,我使用 PathToFileConverter 值转换器将 IDocument 类型转换为字符串。

问题实际上是使用转换器后,SelectedItem 为空。

如何实现SelectedItem保持IDocument类型不为null?

您应该将转换器应用于 ImageSource 属性 绑定,而不是 ListView[=19= 的 ItemsSource ]

绑定到 ListViewSelectedItem 属性 的 属性 的类型应始终为 T ] 属性 绑定或设置为 IEnumerable<T>.

您应该从 ItemSsource 绑定中删除转换器,并添加 DisplayMemberPath="PathOfFileProperty",其中 'PathOfFileProperty' 是 Document 上指示文件路径的字符串 属性