私の質問は以前の投稿の続き です。「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);
}