2017-07-11 19 views
0

私は、子モデル2xをそのプロパティの1つとして使用しているモデルを作成しました。そのデータをモデルに正しく読み込むことはできますが、データグリッドに正しく表示する方法を理解することはできません。テスト行を使用すると、バインディングがわかりますが、プロパティを表示することはできません。異なるモデルで複数のモデルを使用するMVVM

モデル

class BidLine 
    { 
     public TestProduct CompetitorItem; 
     public TestProduct BEItem; 


     public ObservableCollection<BidLine> LoadProduct() 
     { 

      var tList = new ObservableCollection<BidLine>(); 

      tList.Add(new Model.BidLine 
      { 
       BEItem = new TestProduct 
       { 
        ProductID = "test1", 
        VendorID = "vnd1" 
       }, 

       CompetitorItem = new TestProduct 
       { 
        ProductID = "test2", 
        VendorID = "vnd2" 
       } 
      }); 

      tList.Add(new Model.BidLine 
      { 
       BEItem = new TestProduct 
       { 
        ProductID = "test1", 
        VendorID = "vnd1" 
       }, 

       CompetitorItem = new TestProduct 
       { 
        ProductID = "test2", 
        VendorID = "vnd2" 
       } 
      }); 

      return tList; 
     } 

    } 

子供モデル

class TestProduct : ModelBase 
{ 
    private string _productid; 
    public string ProductID 
    { 
     get { return _productid; } 
     set 
     { 
      _productid = value; 
      RaisePropertyChanged("ProductID"); 
     } 
    } 

    private string _vendorID; 
    public string VendorID 
    { 
     get { return _vendorID; } 
     set 
     { 
      _vendorID = value; 
      RaisePropertyChanged("VendorID"); 
     } 
    } 
} 

ビューモデル

class ProductViewModel 
{ 
    public ObservableCollection<BidLine> Products { get; set; } 

    public ProductViewModel() 
    { 
     var dl = new BidLine(); 
     Products = dl.LoadProduct(); 
    } 

編集:

XAMLコード

012フィールドでは動作しませんバインディング
<Grid> 
<DataGrid ItemsSource="{Binding Path=Products}"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Binding="{Binding Path=BEItem.ProductID}" Header="ProductID"/> 
    </DataGrid.Columns> 
</DataGrid> 

+0

DataGridのXAMLを表示する必要があります。 – AQuirky

+0

XAMLを@AQuirkyとして追加してください。問題の原因を完全に把握できるようにしてください。 – Fabulous

+0

XAMLコードで編集を追加しました – starsiv35

答えて

1

。プロパティが必要です。したがって、BEItemとCompetitorItemをプロパティに変換してください。

public TestProduct CompetitorItem { get; set; } 
    public TestProduct BEItem { get; set; } 

作業が開始されます。バインディングをデバッグする最善の方法は、出力ウィンドウを見ることです。あなたは、出力ウィンドウを見ていたら、あなたはこれを見ているだろう...

System.Windows.Data Error: 40 : BindingExpression path error: 'BEItem' property not found on 'object' ''BidLine' (HashCode=31093287)' 

これは明らかに存在していることすべてがBEItemフィールドであるとき、バインディングエンジンがプロパティBEItemを探していることを示しています。

+0

それは働いた!お手伝いありがとう。あなたが提案した変更を行う前に出力ウィンドウを確認しましたが、以下に示すエラーは表示されませんでした。 – starsiv35

関連する問題