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

时间:2017-02-27 10:31:35

标签: wpf binding ivalueconverter

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

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属性是string类型,我使用PathToFileConverter值转换器将IDocument类型转换为字符串。

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

如何实现SelectedItem保持IDocument类型,这不是null?

2 个答案:

答案 0 :(得分:0)

您应该将转换器应用于Source的{​​{1}}属性绑定,而不是Image的{​​{1}}

如果ItemsSource属性绑定或设置为{{ListView,则绑定到SelectedItem的{​​{1}}属性的属性的类型应始终为ListView 1}}。

答案 1 :(得分:0)

您应该从ItemSource绑定中删除转换器,并添加DisplayMemberPath =&#34; PathOfFileProperty&#34;,其中&#39; PathOfFileProperty&#39;是IDocument上的字符串属性,表示文件路径