我有一個名爲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)。
在此先感謝!
的問題是,我不知道我有多少數據列有顯示了,我也不知道有多少行數據將被顯示。您可以將集合綁定到特定列,如XAML中所示[link](http://msdn.microsoft.com/zh-cn/library/system.windows.controls.datagridtextcolumn(v = vs.100).aspx ),但我需要動態綁定到駐留在對象內的集合。 – estarkey7
錯誤。 「獲取或設置將列與數據源中的屬性關聯的綁定」。我知道如何解決這個問題。你從我的回答中發佈了一個鏈接,完全誤導了你。在我指出沒有ItemsSource屬性後。你只能靠自己。 – Paparazzi
他們不是使用DatGridTextColumn中的綁定屬性(在我們都指向的例子中,LOL)綁定到列表? – estarkey7