我的问题与上一篇文章继续我 将我的组合框放在其他子网格中,名为“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);
}