Voglio prendere una raccolta di oggetti e collegarla a uno StackPanel in modo sostanziale se la raccolta ha 4 elementi, all'interno del pannello dello stack che dovrebbe produrre 4 pulsanti, diciamo.Bind Collection to StackPanel
Ho provato questo ... Ma non penso che sia l'approccio corretto comunque. Ho usato DataTemplated per fare questo tipo di idea in passato .. per favore correggimi se sbaglio.
Ecco il mio modello 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; }
}
}
Nel codice ho impostato il DataContext come questo ...
// 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;
E il XAML
<StackPanel x:Name="tStack">
<ItemsControl ItemsSource="{Binding Nodes}">
<ItemsControl.Template>
<ControlTemplate>
<Button Content="{Binding ItemName}"/>
</ControlTemplate>
</ItemsControl.Template>
</ItemsControl>
</StackPanel>
IT bind ma invece di 4 pulsanti ottengo solo un pulsante ....
Idee?
Questo era proprio quello che mi serviva. Grazie. – Trevor
Non è sempre necessario, ma per alcune ulteriori personalizzazioni è necessario impostare la proprietà "IsItemsHost" su StackPanel. – MatrixManAtYrService
Dove stai impostando 'ItemsSource'? Questo XAML è imballato in un ' '? –
IAbstract