我想把一个对象集合绑定到一个StackPanel上,基本上如果这个集合有4个元素,那么在堆栈面板内部应该产生4个按钮。
我试过这个...但是我不认为这是正确的方法。我过去用DataTemplated来做这种类型的想法...如果我错了请纠正我。
"这是我的冒牌模特"
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; }
}
}
在代码中,我像这样设置DataContext ...
// 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;
还有xaml
<StackPanel x:Name="tStack">
<ItemsControl ItemsSource="{Binding Nodes}">
<ItemsControl.Template>
<ControlTemplate>
<Button Content="{Binding ItemName}"/>
</ControlTemplate>
</ItemsControl.Template>
</ItemsControl>
</StackPanel>
它确实绑定,但不是4个按钮,我只得到一个按钮。
想法?
1条答案
按热度按时间iszxjhcz1#
好了,我想通了...用
ItemsControl
解决了问题...