This question has probably been asked several times. However all the posts I land on does not solve my problem. I have a DataModel that has an observable collection inside an observable collection. The visual tree should look something like ItemsControl->VirtualizingStack->Combobox. The following is simple example and "theoretically" items should appear in dropdown but it doesn't. Where am I going wrong.
Public MainWindow()
{
InitializeComponent();
ObservableCollection<Tester> Tester1 = new ObservableCollection<Tester>();
Tester1.Add(new Tester("Sunny", "Jenkins"));
Tester1.Add(new Tester("Pieter", "Pan"));
ObservableCollection<Tester> Tester2 = new ObservableCollection<Tester>();
Tester2.Add(new Tester("Jack", "Sanders"));
Tester2.Add(new Tester("Bill", "Trump"));
ObservableCollection<TheT> myDataV = new ObservableCollection<TheT>();
myDataV.Add(new TheT(Tester1));
myDataV.Add(new TheT(Tester2));
IControl.ItemsSource = myDataV;
IControl.ItemTemplate = TestingDT;
}
<ItemsControl x:Name="IControl" Margin="53,375,81,63">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
//the Datatemplate
private DataTemplate TestingDT
{
get
{
DataTemplate DFT = new DataTemplate();
DFT.DataType = typeof(TheT);
FrameworkElementFactory Item = new FrameworkElementFactory(typeof(ComboBox));
Binding B = new Binding("TesterObject")
{
Source = this
};
Item.SetBinding(ComboBox.ItemsSourceProperty, B);
//Item.SetValue(ComboBox.DisplayMemberPathProperty, "Name");
DFT.VisualTree = Item;
return DFT;
}
}
//And the DATA Model
class Tester
{
public Tester(string name, string surname)
{
Name = name;
Surname = surname;
}
public string Name { get; set; }
public string Surname { get; set; }
public override string ToString()
{
return Name + " " + Surname;
}
}
class TheT
{
ObservableCollection<Tester> TesterObject;
public TheT(ObservableCollection<Tester> testerObject)
{
TesterObject = testerObject;
}
public string myDisplayName { get { return "test"; } }
public void Add(Collection<Tester> col)
{
TesterObject.Clear();
foreach (Tester t in col)
{ TesterObject.Add(t); }
}
}