c# - databinding - Colección de enlaces a StackPanel
combobox databinding c# (1)
Bien, lo he descubierto ... Usando un ItemsControl
resolvió el problema ...
<ItemsControl x:Name="tStack" Grid.Column="0">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding ItemName}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Quiero tomar una colección de objetos y vincularla a un StackPanel, básicamente, si la colección tiene 4 elementos, dentro del panel de pila que debería producir 4 botones, por ejemplo.
Intenté esto ... Pero no creo que sea el enfoque correcto de todos modos. Usé DataTemplated para hacer este tipo de idea en el pasado ... por favor corrígeme si me equivoco.
Aquí está mi modelo falso
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; }
}
}
En el código, configuré el DataContext así ...
// 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;
Y el xaml
<StackPanel x:Name="tStack">
<ItemsControl ItemsSource="{Binding Nodes}">
<ItemsControl.Template>
<ControlTemplate>
<Button Content="{Binding ItemName}"/>
</ControlTemplate>
</ItemsControl.Template>
</ItemsControl>
</StackPanel>
TI se une, pero en lugar de 4 botones solo obtengo un botón ...
Ideas?