Je suis nouveau à Silverlight, donc je n'ai pas une compréhension complète de tous les contrôles à ma disposition. Ce que je voudrais faire est d'utiliser la liaison de données et un modèle de vue pour maintenir une collection d'éléments. Voici un code maquette de ce que je voudrais faire:Liaison de données Silverlight pour la collection dans le panneau de pile
Modèle
public class MyItem
{
public string DisplayText { get; set; }
public bool Enabled { get; set; }
}
ViewModel
public class MyViewModel : INotifyPropertyChanged
{
private ObservableCollection<MyItem> _myItems = new ObservableCollection<MyItem>();
public ObservableCollection<MyItem> MyItems
{
get { return _myItems; }
set
{
_myItems = value
NotifyPropertyChanged(this, "MyItems");
}
}
}
Voir
<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>
Donc mon but final serait que chaque fois que j'ajoute un autre MyItem
à la collection MyItems
cela créerait un nouveau StackPanel avec checkbox et textblock. Je n'ai pas besoin d'utiliser un panneau de pile, mais j'ai juste pensé que je l'utiliserais pour cet exemple.
Merci! C'est une solution très propre, et j'aime aussi comment vous avez intégré le modèle de données dans la propriété ListBox.ItemTemplate. Je n'avais pas pensé à le faire de cette façon. –
heureux d'aider. bien sûr, vous n'avez pas ** à ** le mettre dans le modèle d'objet de cette façon - vous pourriez aussi définir un DataTemplate pour votre type. –