【问题标题】:Binding itemSource ListView in Mode = TwoWay在 Mode = TwoWay 中绑定 itemSource ListView
【发布时间】:2016-04-25 17:15:37
【问题描述】:

对不起,我的英语不好。我试图在列表视图的 itemsource 中绑定图像列表:

ItemsSource="{x:Bind ViewModel.Images,Mode=TwoWay}"

In ViewModel I have a list of Images :

     public List<Image> Images
    {
        get { return _images; }
        set
        {
            _images = value;
            base.RaisePropertyChanged();
        }
    }

绑定模式设置为双向时,出现以下错误:

Invalid binding path 'View Model.Reports': You can not associate the type 'System.Collections.Generic.List (posytron.epart.uwp.Models.DOM.Report)' to 'System.Object' without a converter

如果我将绑定模式设置为 OneWay 就可以了!

我已经开发了一个转换器来将布尔值转换为可见性属性。

转换器应该包含什么?有人能帮我吗?为什么会出现这个错误?

谢谢!!

【问题讨论】:

  • 请发布 ListView xaml 和模型类。没有它就很难给出解决方案
  • @LovetoCode +1,还有为什么你需要在 Listview 中使用 TwoWay?

标签: win-universal-app template10


【解决方案1】:

我没有使用 Tempalte 10,只是一个普通的 UWP 应用程序来测试你的问题,我想我已经重现了你的问题。

由于模板 10 的型号,错误消息可能略有不同,但我认为错误是相同的。

如果我将绑定模式设置为 OneWay 就可以了!

如果你使用 {x:Bind} 的 OneWay 模式,你的 ListViewItemSource 是绑定目标,而你在 ViewModel 中的 List&lt;Image&gt; Images 是绑定源。显然,您的来源是Image 控件的列表。 ItemSource的类型是System.Object,这里的绑定源是一个List类型的Image控件。默认情况下,数据项在 ListView 中显示为其绑定的数据对象的字符串表示形式。所以当 xaml 无法识别这个字符串时,它会直接使用 ToString 方法的实现来返回类型名称并显示在项目上。总之,ItemSource作为绑定目标已经完成了类型转换的工作。

但是当使用 TwoWay 模式时,ItemSource 是绑定目标,也是绑定源,List&lt;Image&gt; Images 也是。它在“ItemSource = binding target”模式中运行良好,原因我在上面已经解释过了,但是如果“ItemSource = binding source”,它不会自动将 System.Object 类型转换为您的 List 类型。您也可以说,您没有提供将 System.Object 类型转换为所需类型的转换器。

但我认为您不需要 TwoWay 绑定。 TwoWay 绑定 在目标或源对象发生变化时更新其中之一。创建绑定时,目标属性会从源更新。从您的代码中,我看不到您可以更改项目中的图像控件以更新源列表。如果你只是想动态添加或删除或编辑ListView中的项目,你可以在这里使用OneWay模式,并在后面的代码中更改List。

【讨论】:

  • 谢谢!它只是错误似乎说相反。错误是:您无法将类型 System.Collections.Generic.List (posytron.epart.uwp.Models.DOM.Report) 关联到 System.Object。错误您不能将 System.Object 类型关联到 System.Collections.Generic.List (posytron.epart.uwp.Models.DOM.Report) 不是更正确吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-21
  • 1970-01-01
  • 2021-04-16
  • 1970-01-01
  • 2014-05-10
  • 2014-10-27
  • 1970-01-01
相关资源
最近更新 更多