【问题标题】:WPF: How to get SelectedItem after applying value converter?WPF:应用值转换器后如何获取 SelectedItem?
【发布时间】:2017-02-27 10:31:35
【问题描述】:

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

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类型?

【问题讨论】:

  • 为什么要将 ItemsSource 转换为另一种类型?这没有任何意义。
  • 因为 IDocument 不是图像 Source 属性的正确类型。另一方面,我需要 SelectedItem 为 IDocument 类型。
  • 您应该将转换器应用到 Source 属性绑定,而不是 ListView 的 ItemsSource。
  • 如果您将建议写为常规答案,我会将其标记为有用。谢谢。

标签: wpf binding ivalueconverter


【解决方案1】:

您应该将转换器应用于ImageSource 属性绑定,而不是ListViewItemsSource

如果ItemsSource 属性绑定或设置为IEnumerable&lt;T&gt;,则绑定到ListViewSelectedItem 属性的属性类型应始终为T

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-23
      • 2020-10-27
      • 2015-12-23
      • 2012-12-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多