1

我的问题与上一篇文章继续 将我的组合框放在其他子网格中,名为“grid_SortPart”。所以,我试图设置 GetUIElement("grid_SortPart").DataContext = _viewModel; 这对我不起作用。

我也尝试将 _target.Loaded 更改为 _target.LayoutUpdated,但仍然存在同样的问题。在调试期间我发现,我收到错误“对象引用未设置为对象的实例”。对于对象_target。

以下是我通过引用帖子设置的代码。请建议我做错的事情以及纠正它的方法。

public ObservableCollection<ReturnStatus> _status;
[TestInitialize]
public void TestInit()
{
  _target = new EfileView();
  efvm = new EfileViewModel();
  var p1 = new ReturnStatus { Status = "Completed" };
  var p2 = new ReturnStatus { Status = "Not Completed" };
  _status = new ObservableCollection<ReturnStatus> { p1, p2 };
  GetUIElement<Grid>("grid_SortPart").DataContext = efvm;
}

private T GetUIElement<T>(string name) where T : UIElement
{ return (T)_target.FindName(name); }

[Asynchronous]
[TestMethod]
public void TestCurrencySelection()
{
  _target.LayoutUpdated += (s, e) => 
   {
     // Set the currency list explicitly
     efvm.ItemSource_ReturnStatus = _status;
     var currencyCombo = GetUIElement<ComboBox>("cmb_Returns_2");
     // This assert fails as Items.Count == 0     
     CollectionAssert.AreEquivalent(currencyCombo.Items, _status, "Failed to data-bind currencies.");
      EnqueueTestComplete();
    };
    TestPanel.Children.Add(_target);
}
4

0 回答 0