2012-09-25 79 views
0

我有一個名爲TestData的對象,它包含兩個屬性,一個字符串和一個ObservableCollection。我有一個ObservableCollection,用於在代碼中的DataGrid中生成列。我沒有動態生成基於TestData對象的DataGridTextColumn和它們各自的頭,但我無法將DataGridTextColumn綁定屬性綁定到TestData內部的ObservableCollection。將DataGrid列綁定到另一個對象內部

現在,我已經說在口頭上的問題,讓我清楚它通過搭代碼:

TestData.cs

public class TestData 
{ 
    private ObservableCollection<string> data = new ObservableCollection<string>(); 
    public string Header { get; set; } 
    public ObservableCollection<string> Data 
    { 
     get 
     { 
      return data; 
     } 

     set 
     { 
      data = value; 
     } 
    } 
} 

MainWindow.xaml.cs代碼

public partial class MainWindow : Window 
{ 
    private ViewModel viewModel = new ViewModel(); 
    private List<string> headers = new List<string>(); 
    private ObservableCollection<TestData> mainData = new ObservableCollection<TestData>();   


    public MainWindow(ViewModel vm) 
    { 
     InitializeComponent(); 
     viewModel = vm; 
     this.DataContext = viewModel;  


     mainData = viewModel.MainData; 

     this.spreadSheet.ItemsSource = viewModel.MainData;    

     foreach (TestData data in mainData)  
     { 
      if (headers.Contains(data.Header) == false) 
      { 
       headers.Add(data.Header); 
       DataGridTextColumn col = new DataGridTextColumn();      
       int x = viewModel.MainData.IndexOf(data);      
       Binding bind = new Binding("Data");      
       bind.BindsDirectlyToSource = true;      
       bind.Source = mainData[x];      
       col.Binding = bind; 
       col.Header = data.Header;          
       this.spreadSheet.Columns.Add(col);   
      } 

     } 
    } 
} 
背後

XAML MainWindow.xaml

<Grid>     
    <DataGrid AutoGenerateColumns="False" Height="Auto" HorizontalAlignment="Stretch" Name="spreadSheet" VerticalAlignment="Stretch" Width="Auto" /> 

</Grid> 

如果我在我的ObservableCollection中放置了4個TestData對象,我得到了它們的頭文件,但TestData對象內的ObservableCollection中的所有數據僅在DataGrid中顯示爲(Collection)。

在此先感謝!

回答

0

我不認爲你正在看這個。
您不會將單獨的集合與單個字符串綁定到每列。
將行和列的單個二維集合作爲整體綁定到DataGrid。

注意一列沒有ItemsSource屬性。只有一個路徑屬性。 DataGridTextColumn

DataGrid有一個ItemsSource屬性。 DataGrid

public class Myrow 
{ 
    public string Col1 { get; private set; } 
    public string Col2 { get; private set; } 
    public Myrow (string col1, string col2) { Col1 = col1, Col2 = Col2 } 
} 

ObservableCollection<Myrow> Myrows ... 

MyRows被綁定到DataGrid(不列)

+0

的問題是,我不知道我有多少數據列有顯示了,我也不知道有多少行數據將被顯示。您可以將集合綁定到特定列,如XAML中所示[link](http://msdn.microsoft.com/zh-cn/library/system.windows.controls.datagridtextcolumn(v = vs.100).aspx ),但我需要動態綁定到駐留在對象內的集合。 – estarkey7

+0

錯誤。 「獲取或設置將列與數據源中的屬性關聯的綁定」。我知道如何解決這個問題。你從我的回答中發佈了一個鏈接,完全誤導了你。在我指出沒有ItemsSource屬性後。你只能靠自己。 – Paparazzi

+0

他們不是使用DatGridTextColumn中的綁定屬性(在我們都指向的例子中,LOL)綁定到列表? – estarkey7

相關問題