example databinding bindingcontext c# silverlight data-binding xaml

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?