J'ai une application WPF avec de nombreuses étiquettes.
for(int i = 1; i<40 ;i++) { label"i".content = i*10; }
6 Réponses :
Vous pouvez ajouter toutes ces C'est un travail fastidieux, mais vous ne devez que Faites-le une fois. p> étiquette code> à une liste
<étiquette> code> dans le constructeur du formulaire.
Si vous travaillez avec contraignant, il est facile. Il vous suffit de conserver votre contenu d'étiquettes dans un Editer 1: P> Votre XAML devrait également être quelque chose comme: p> Observablecollection
<ItemsControl ItemsSource="{Binding MyLabelValues}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<sdk:Label Content="{Binding Mode=TwoWay}"></sdk:Label>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Accepter. Cela devrait être la voie à suivre!
Utilisation de ce code
foreach (Label lbl in FindVisualChildren<Label>(window)) { // do something with lbl here }
Comment de cela? Le résultat final sera ceci. P> label1.Text = 10;
label2.Text = 20;
label3.Text = 20;
...
...
Si vos étiquettes sont toutes nommées systématiquement, vous pouvez le faire comme ceci:
var numberOfLabels = 40; for(int i = 1; i <= numberOfLabels; i++) { var labelName = string.Format("label{0}", i); var label = (Label) this.FindName(labelName); label.Content = i * 10; }
Vous pouvez le faire avec la liaison!
Vue XAML: P>
class ViewModelClass : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private void NotifyPropertyChanged(string name) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } private ObservableCollection<StringObject> _List = new ObservableCollection<StringObject>(); public ObservableCollection<StringObject> List { get { return _List; } set { _List = value; NotifyPropertyChanged("List"); } } public ViewModelClass() { List = new ObservableCollection<StringObject> { new StringObject {Value = "your"}, new StringObject {Value = "list"}, new StringObject {Value = "of"}, new StringObject {Value = "string"} }; } } public class StringObject { public string Value { get; set; } }
Pouvez-vous créer un tableau d'étiquettes, puis boucle?
J'ai créé mes étiquettes dans xaml comme: <étiquette x: nom = "label1" /> <étiquette x: nom = "label2" />
Code-derrière une option pour créer vos étiquettes?
WPF application i>? Ou est-ce juste sur une fenêtre / contrôle?
Si vous devez définir chaque étiquette dans XAML, pourquoi ajouterait
texte = 1 code>,
texte = 10 code> etc. Soyez mauvais? Utiliser le code derrière, pour moi, serait plus obscope que de simplement la définir dans XAML.