我正在尝试使用以下代码显示一个组变量,其中包含从XAML中的代码(C#)到Textblock的字符串:
Textblock1.Text = String1Class;
Textblock2.Text = String2Class;
Textblock3.Text = String3Class;
Textblock4.Text = String4Class;
Textblock5.Text = String5Class;
Textblock6.Text = String6Class;
代码可以工作,但是一遍又一遍地写同样的东西很痛苦。 我想问一下是否有更好的方法。我知道它与数组和循环有关,但我对C#和WPF并不是很熟悉。
答案 0 :(得分: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];
}
答案 1 :(得分:0)
这在很大程度上取决于您希望如何显示信息。例如,您可以使用List
,并将项目写出TextBlock
。
List<string> stringsList = new List<string>() {
"string1",
"string2"
};
foreach (string s in stringsList)
{
textBlock1.Text += s + @"\n";
}
答案 2 :(得分: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;
}
}
}
答案 3 :(得分: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];
}
<强>输出:强>