Gab*_*abe 66 c# data-binding silverlight xaml
我想获取一个对象集合并将其绑定到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; }
}
}
Run Code Online (Sandbox Code Playgroud)
在代码中我像这样设置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;
Run Code Online (Sandbox Code Playgroud)
和xaml
<StackPanel x:Name="tStack">
<ItemsControl ItemsSource="{Binding Nodes}">
<ItemsControl.Template>
<ControlTemplate>
<Button Content="{Binding ItemName}"/>
</ControlTemplate>
</ItemsControl.Template>
</ItemsControl>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)
它确实绑定了,而不是4个按钮我只得到一个按钮....
想法?
Gab*_*abe 145
好吧,我已经弄明白了...用一个ItemsControl解决了问题......
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
49649 次 |
| 最近记录: |