Okay, Entschuldigung für meine vorherige Unordnung.Wie ItemsSource-Eigenschaft zuweisen
Die Situation ist folgende: Ich habe zwei benutzerdefinierte Objekte wie folgt definiert: MainObject:
public class MainObject
{
private string mainObjectName;
public string MainObjectName { get { return mainObjectName; } }
private List<SubObject> subObjectData;
public List<SubObject> SubObjectData { get { return subObjectData; } }
public MainObject(string name, List<SubObject> objectData)
{
mainObjectName = name;
subObjectData = objectData;
}
}
SUBOBJECT:
public class SubObject
{
private string subObjectName;
public string SubObjectName { get { return subObjectName; } }
private List<int> integerData;
public List<int> IntegerData { get { return integerData; } }
public SubObject(string name, List<int> data)
{
subObjectName = name;
integerData = data;
}
}
Ich habe auch ein Ansichtsmodell, das der Einfachheit halber einige Daten definiert mit diese zwei Objekte wie folgt: VM
public List<Model.MainObject> VMList = new List<Model.MainObject>()
{
new Model.MainObject("MainItem1", new List<Model.SubObject>()
{
new Model.SubObject("SubItem1", new List<int>() { 1,6,3}),
new Model.SubObject("SubItem2", new List<int>() { 5,2,9})
}),
new Model.MainObject("MainItem2", new List<Model.SubObject>()
{
new Model.SubObject("SubItem1", new List<int>() { 0,3,1}),
new Model.SubObject("SubItem2", new List<int>() { 7,5,2})
})
};
jetzt habe ich die folgenden UI-
<Grid>
<ItemsControl Name="MainObjectIC">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding MainObjectName}"/>
<ItemsControl Name="SubObjectIC">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding SubObjectName}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
ich die Itemssource des MainObjectIC im Code zuweisen hinter etwa so:
ViewModel.VM dc = new ViewModel.VM();
public MainWindow()
{
InitializeComponent();
DataContext = dc;
MainObjectIC.ItemsSource = dc.VMList;
}
Ich möchte auch, aber die Itemssource zum SubObjectIC zuweisen, dass ich zu tun muss das ItemsControl Objekt holen. Und das versuche ich zu erreichen.
Von dem, was ich verstanden habe, kann es sehr, sehr schlecht und nutzlos sein, die ItemsSource-Eigenschaft aus dem Code hinter zu zuweisen.
Ich denke, eine relative Quelle für die Bindung für die "Kind" Sammlung sollte funktionieren. Ich habe das nur getan, um den Ahnen-Typ des Fensters zu finden, aber ich denke, dass es viel mehr Typen erlauben wird. –
gibt es '{Binding ...}', das über das Markup hinweg bindet. Warum ItemsSource für 'RelicItemsSource' kann nicht an XAML gebunden werden? – ASh
ja, aber ich habe keine Ahnung, wie es geht, da die RelicItemsSource von dem Objekt abhängen sollte, das an die ComponentsItemsSource gebunden ist. Außerdem denke ich, dass ich den DataContext an dieses anstatt an mein custome Objekt binden muss. –