Chcę pobrać kolekcję obiektów i powiązać ją z StackPanel, więc w zasadzie, jeśli kolekcja ma 4 elementy, wewnątrz panelu stosu, który powinien wytworzyć 4 przyciski, powiedzmy.Powiąż kolekcję z StackPanel
Próbowałem tego ... Ale i tak nie sądzę, że jest to właściwe podejście. Użyłem DataTemplated do zrobienia tego typu pomysłu w przeszłości. Popraw mnie, jeśli się mylę.
Oto mój fałszywy wzór
public class MockModel
{
public ObservableCollection<MockNode> Nodes;
public MockModel()
{
Nodes = new ObservableCollection<MockNode>();
}
}
public class MockNode
{
public MockNode()
{
}
private string itemname;
public string ItemName
{
get { return this.itemname; }
set { this.itemname = value; }
}
}
W kodzie ustawić DataContext tak ...
// Init Model
MockModel myModel = new MockModel();
for (int i = 0; i < 4; i++)
{
MockNode mn = new MockNode();
mn.ItemName = String.Format("Node {0}", i);
myModel.Nodes.Add(mn);
}
// Set DataContext for StackPanel
Stack.DataContext = myModel.Nodes;
I XAML
<StackPanel x:Name="tStack">
<ItemsControl ItemsSource="{Binding Nodes}">
<ItemsControl.Template>
<ControlTemplate>
<Button Content="{Binding ItemName}"/>
</ControlTemplate>
</ItemsControl.Template>
</ItemsControl>
</StackPanel>
IT wiąże, ale zamiast 4 przycisków otrzymuję tylko jeden przycisk ...
Pomysły?
To było to, czego potrzebowałem. Dziękuję Ci. – Trevor
Nie zawsze jest to konieczne, ale w przypadku niektórych dalszych dostosowań należy ustawić właściwość "IsItemsHost" w StackPanel. – MatrixManAtYrService
Gdzie ustawiasz 'ItemsSource'? Czy ten XAML jest zawijany w ' '? –
IAbstract