2016-10-26 4 views
0

Я пытаюсь, чтобы показать группу переменных, которые содержат строку из кода позади (C#) для TextBlock в XAML, используя код ниже:Loop и массив - Показать Струны

Textblock1.Text = String1Class; 
Textblock2.Text = String2Class; 
Textblock3.Text = String3Class; 
Textblock4.Text = String4Class; 
Textblock5.Text = String5Class; 
Textblock6.Text = String6Class; 

код работает но его боль, повторяющая одно и то же снова и снова. Я хочу спросить, есть ли лучший способ. Я знаю, что это связано с массивами и циклами, но я не очень хорошо знаком с C# и WPF.

ответ

1

Учитывая тот факт, что у вас есть отдельные переменные для каждого из StringXClass значений, которые вы должны сделать это, если вы хотите сохранить переменные те же:

var tbs = new [] { Textblock1, Textblock2, Textblock3, Textblock4, Textblock5, Textblock6, }; 
var scs = new [] { String1Class, String2Class, String3Class, String4Class, String5Class, String6Class, }; 

for (var i = 0; i < tbs.Length; i++) 
{ 
    tbs.Text = scs; 
} 

В качестве альтернативы можно создать массив в первую очередь.

var StringClass = new string[6]; 

Затем замените String1Class с StringClass[0], String2Class с StringClass[1], и т.д., в вашем коде.

Тогда напишите это:

var tbs = new [] { Textblock1, Textblock2, Textblock3, Textblock4, Textblock5, Textblock6, }; 
for (var i = 0; i < tbs.Length; i++) 
{ 
    tbs.Text = StringClass[i]; 
} 
+0

Это сделало это! Благодаря! – syn3rgy

0

Это очень зависит от того, как вы хотите отображать информацию. Например, вы можете использовать List и выписать элементы на TextBlock.

List<string> stringsList = new List<string>() { 

    "string1", 
    "string2" 
}; 

foreach (string s in stringsList) 
{ 
    textBlock1.Text += s + @"\n"; 
} 
+0

ОК, но я могу сделать то же самое с TextBlocks? – syn3rgy

+0

foreach (строка s в строкахList) textBlock1.Text = – beardedmogul

+0

Извините. Не используется для комментирования ... Будет редактировать ответ. – beardedmogul

0

Вы можете перебрать TextBlocks, если они находятся в одном из родителей:

string controlName = "TextBlock"; 
int startIndex = 1; 
int endIndex = 100; 

List<string> stringList = new List<string>(); 
for(int i = 0; i < 100 ; i++) 
    stringList.Add("string"+(i+1).ToString()); 

for(int i = startIndex; i<=endIndex; i++) 
{ 
    foreach(control c in TextBlock1.Parent.Controls)//Or if you know the actual parent to which all the textBoxes belong 
    { 
     if(c.Name == (controlName+i)) 
     {    
      (c as TextBlock).Text = stringsList[i-1]; //since our start index starts with 1. 
      break;     
     } 
    } 
} 
0

XAML:

<StackPanel> 
    <TextBlock Name="TextBlock1"></TextBlock> 
    <TextBlock Name="TextBlock2"></TextBlock> 
    <TextBlock Name="TextBlock3"></TextBlock> 
    <TextBlock Name="TextBlock4"></TextBlock> 
</StackPanel> 

Код:

TextBlock[] textboxes = { TextBlock1, TextBlock2, TextBlock3, TextBlock4 }; 
string[] list = { "TextBlock 1", "TextBlock 2", "TextBlock 3", "TextBlock 4" }; 

for (int i = 0; i < textboxes.Length; i++) 
{ 
    textboxes[i].Text = list[i]; 
} 

Выход:

enter image description here