<Run>
与许多文本XAML元素一样,不包含“文本”或“内容”之类的属性。我试图使用{p>来获取<Run>
元素的内容
MessageBox.Show(Convert.ToString(output.Inlines.ElementAt(0)));
在此之前,我用output
元素填充了<Run>
,这是一个文本块,这就是为什么我使用ElementAt(0)
的原因。但是,通过运行此代码获得的输出是“ System.Windows.Documents.Run”,而不是<Run>
元素的值。那么我如何获得该元素的值呢?
答案 0 :(得分:1)
如果集合中仅包含“运行”,则可以执行以下操作:
List<String>list1 = new ArrayList<String>();
list1.add("tommy");
list1.add("Alex");
list1.add("Bryan");
list1.add("Tom");
list1.add("William");
list1.add("Willy");
List<String>list2 = new ArrayList<String>();
list2.add("Alex");
list2.add("William");
list2.add("Candice");
list2.add("Jane");
list2.add("Parker");
list2.add("tommy");
List<String>merged = new ArrayList<String>();
for ( String str1 : list1) {
for ( String str2 : list2) {
if ( str1.equals(str2)) {
merged.add("[ " + str1);
merged.add(str2 + "]");
}
}
}
for ( String str1 : list1) {
for ( String str2 : list2) {
if ( !str1.equals(str2)) {
merged.add("[ " + str1);
merged.add(str2 + "]");
}
}
}
System.out.println(merged);
答案 1 :(得分:1)
由于未将文本转换为运行而无法获得文本输出的原因。
强制转换后,您可以获取.Text属性:
XAML
<TextBlock Name="Text">
<Run Text="Hello"
FontSize="100"
Name="MyRun" />
</TextBlock>
隐藏代码
MessageBox.Show(((Run)Text.Inlines.ElementAt(0)).Text);
如果要遍历多个运行:
XAML
<TextBlock Name="Text">
<Run Text="Hello"
FontSize="100"
Name="MyRun" />
<Run Text="My"
FontSize="100"
Name="MyRun2" />
<Run Text="Friend"
FontSize="100"
Name="MyRun3" />
</TextBlock>
隐藏代码
for(int x = 0; x < Text.Inlines.Count; x++)
{
MessageBox.Show(((Run)Text.Inlines.ElementAt(x)).Text);
}
希望这会有所帮助。