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.