Kann man eine Combobox Itemssource aus einer Datenvorlage eines ItemsControl binden
GegebenComboBox
in demItemsControl
wird verschiedene Gegenstände haben, die auf dem basierenDataContext
des Gegenstandes (nicht desItemsControl
). Kann es gemacht werden? Und wie? Am liebsten von Code dahinter.
Ich habe folgendesDataModel
:
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
{
public ObservableCollection<Tester> TesterObject;
public TheT()
{
TesterObject = new ObservableCollection<Tester>();
}
public string myDisplayName { get { return "test"; } }
public void Add(Collection<Tester> col)
{
TesterObject.Clear();
foreach (Tester t in col) { TesterObject.Add(t); }
}
}
ImWindow
Code, den ich habe:
ObservableCollection<TheT> myDataV ;
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"));
myDataV = new ObservableCollection<TheT>();
myDataV.Add(new TheT(Tester1));
myDataV.Add(new TheT(Tester2));
IControl.ItemsSource = myDataV;
IControl.ItemTemplate = TestingDT;
}
IControl
sein einItemsControl
eingerichtet inXAML
:
<ItemsControl x:Name="IControl" Margin="53,375,81,63">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
UndDataTemplate
dass ich alle Arten von Möglichkeiten ausprobiert habe. Es werden jedoch immer noch keine Artikel wie folgt angezeigt:
// 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;
}
}