2016-10-13 9 views
0

私はWPFを初めて使用しており、データグリッドにデータをバインドしようとしました。私はDatagridにバインドされている項目のリストを持っています。同じデータグリッドには、リストから値を取得することはできませんが、2つのデータグリッド列にバインドする必要がある個々の値である列はほとんどありません(2列)。誰も私が解決策を見つけるのを助けることができますか? 以下はxamlコードです。リストと個別のデータ項目で単一のデータグリッドをバインドする

ItemListは、DataGridにバインドされたアイテムのリストです。それは、 "PropertyName"と "PropertyValue"がDataGrid列にバインドされています。

<DataGrid x:Name="dtgridUpload" AutoGenerateColumns="False" ItemsSource="{Binding ItemList}"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Binding="{Binding PropertyName}" IsReadOnly="True"> 
        <DataGridTextColumn.Header> 
         <StackPanel Orientation="Horizontal"> 
           <TextBlock Text="Name" />           
         </StackPanel> 
       </DataGridTextColumn.Header> 
      </DataGridTextColumn> 
      <DataGridTextColumn Header="Value" Width="200" Binding="{Binding PropertyValue}" IsReadOnly="True"/> 
      <DataGridTextColumn Header="Unit" Binding="{Binding PropertyUnit}" IsReadOnly="True"/>        
      <DataGridTextColumn Header="Value1" Width="200" IsReadOnly="{Binding Path=IsReadOnly}" Binding="{Binding PropertyName1}"/> 
      <DataGridTextColumn Header="Unit1" Binding="{Binding PropertyUnit1}"/> 
    </DataGrid.Columns> 
</DataGrid> 

は.csコード

private List<DeviceData_VM> itemList; 
    public List<DeviceData_VM> ItemList 
    { 
     get { return itemList; } 
     set 
     { 
      itemList= value; 
      NotifyPropertyChanged("ItemList"); 
     } 
    } 
    TextReader readStream = new StreamReader("output.xml"); 
    ItemList= (List<DeviceData_VM>)serialiser.Deserialize(readStream); 

しかし、 "PropertyName1" と "PropertyValue1は、" 他の変数から取得されます。

void GetFileData() 
     { 
      string[] readText = File.ReadAllLines(@"D:\WriteLines.txt"); 
       List<DeviceData_VM> tempeDataLst = new List<DeviceData_VM>(); 
       for (var i = 0; i < readText.Length - 1; i++) 
       { 
        if (readText[i][0] == ';' || readText[i][0] == '/' || readText[i][0] == '@' || readText[i][0] == '#' || readText[i][0] != 'A') 
         continue; 
        var cols = readText[i].Split('\t'); 
        DeviceData_VM fileData = new DeviceData_VM(); 
        fileData.PmName = cols[1]; 
        fileData.PmValue = cols[2];      
        fileData.PmUnit = cols[4]; 
        tempeDataLst.Add(fileData); 
        TabInfo tabCompInfo = new TabInfo(); 
        foreach (var tabItem in LstTabInfo) 
        { 
         foreach (var devItem in tabItem.LstPmData1) 
         { 
          if(devItem.PmName == fileData.PmName) 
          { 
           if(fileData != null){ 

            tabCompInfo.RightData = fileData;          
            break; 
           }         
          } 
         } 
        } 
       } 
      } 

「RightData」にはProperName1とPropertyValue1があります。これらをデータグリッド列にバインドする方法は?前もって感謝します。

+0

同じアイテム内のすべての列を結合するタイプを作成します。 – Fabio

答えて

0

バインドする追加のプロパティをDeviceData_VMモデルに追加しましたか?

その後、希望するデータソースから各DeviceData_VMに値を追加します。

各アイテムをItemListに追加すると、バインディングは期待通りに機能するはずです。

関連する問題