UWP ValueConverter 返回 System._COMObject

Posted

技术标签:

【中文标题】UWP ValueConverter 返回 System._COMObject【英文标题】:UWP ValueConverter returns System._COMObject 【发布时间】:2016-05-18 13:24:54 【问题描述】:

我正在为 UWP (Windows 10) 项目创建单元测试。我正在测试一个值转换器。这 如果一切正常,转换器应该返回 ListView 控件的 SelectedItems 属性。 这是转换器:

internal class MultipleSelectionChangedConverter : IValueConverter

  public object Convert(object value, Type targetType, object parameter, string language)
  
    var listView = parameter as ListView;

    if (listView != null)
       return listView.SelectedItems;

    return new ListView();
  

  public object ConvertBack(object value, Type targetType, object parameter, string language)
  
    throw new NotImplementedException();
  

我正在尝试检查此单元测试中的结果:

[UITestMethod] 
[TestCategory("Multiple Selection Changed Converter")]
public void ShouldSetSelectedItems()

  IList<object> results = null;

  var listToSetSelectedItems = new ListView
  
    ItemsSource = new List<string>  "item 1", "item 2", "item 3", "item 4"     ,
    SelectionMode = ListViewSelectionMode.Multiple,
  ;
  listToSetSelectedItems.SelectedItems.Add("item 1");
  listToSetSelectedItems.SelectedItems.Add("item 2");

  results = (IList<object>)converter.Convert(null, typeof(IList<object>), listToSetSelectedItems, string.Empty);

  Assert.IsTrue(results != null);
  Assert.IsTrue(results.Count == 2);
  //Assert.IsTrue(results.Contains("item 1"));
  //Assert.IsTrue(results.Contains("item 2"));

该变量应包含 IList 类型的 SelectedItems 属性。相反,它返回一个 System._COMObjects 值。 此外,我收到“信息不可用,没有为 Windows.UI.Xaml.dll 加载符号”消息。我该怎么做才能获得 SelectedItems 属性的正确类型?

谢谢

【问题讨论】:

“该变量应包含 SelectedItems 属性” - 哪个变量? “IList 类型” - 你不是在使用IList&lt;object&gt; 吗? “它返回一个 System._COMObjects” - 确定这不是 System.__COMObject 测试失败,转换器坏了。写一个错误报告。 【参考方案1】:

在这部分代码中

var listView = parameter as ListView;

    if (listView != null)
       return listView.SelectedItems;

    return new ListView();

当 listview 不为空时,您将返回所选项目的列表。但是,当它为 null 时,您将返回一个新的列表视图本身。你不认为返回类型应该相同吗?

【讨论】:

以上是关于UWP ValueConverter 返回 System._COMObject的主要内容,如果未能解决你的问题,请参考以下文章

如何将 ValueConverter 应用于基于约定的 Caliburn.Micro 绑定示例?

UWP/C# - AQS 和 USB 设备的问题

WPF 值转换器ValueConverter 进阶用法

Binding:资源和ValueConverter

如何在 Windows Phone 8 中使用 ValueConverter 作为 StaticResource

尝试绑定此 ValueConverter 时出现“只能在 DependencyObject 的 DependencyProperty 上设置绑定”错误