堆栈面板中集合的Silverlight数据绑定

Bla*_*ell 2 silverlight .net-4.0 mvvm

我是Silverlight的新手,所以我没有完全掌握所有可用的控件.我想要做的是使用数据绑定和视图模型来维护项目集合.这是我想要做的一些模拟代码:

模型

  public class MyItem
    {
       public string DisplayText { get; set; }
       public bool Enabled { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

视图模型

public class MyViewModel : INotifyPropertyChanged
{
      private ObservableCollection<MyItem> _myItems = new ObservableCollection<MyItem>();
      public ObservableCollection<MyItem> MyItems
      {
          get { return _myItems; }
          set 
          { 
               _myItems = value
               NotifyPropertyChanged(this, "MyItems");
           } 
      }  
}
Run Code Online (Sandbox Code Playgroud)

视图

<Grid x:Name="LayoutRoot" Background="White">
        <StackPanel ItemsSource="{Binding MyItems}">            
            <StackPanel Orientation="Horizontal">
                <CheckBox "{Binding Enabled, Mode=TwoWay}"></CheckBox>
                <TextBlock Text="{Binding DisplayText, Mode=TwoWay}" />
            </StackPanel>                
        </StackPanel>        
    </Grid>
Run Code Online (Sandbox Code Playgroud)

所以我的最终目标是每次我将另一个添加MyItemMyItems集合时,它将创建一个带有复选框和文本块的新StackPanel.我不必使用堆栈面板但只是想我会将其用于此示例.

Mua*_*Dib 5

看起来你想要一个<ListBox>,然后设置<ListBox.ItemTemplate>你的<StackPanel>东西......

<ListBox ItemsSource=”{Binding Classes, Source={StaticResource model}}”>           
   <ListBox.ItemTemplate>               
      <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <CheckBox "{Binding Enabled, Mode=TwoWay}"/>
                <TextBlock Text="{Binding DisplayText, Mode=TwoWay}" />
            </StackPanel>  
      </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud)

这是一个很好的例子(它是WPF,但应该只是对silverlight的微小改动)