2017-04-18 27 views
0

我有一個列表,用於從feedservice中提取數據並生成一組名稱。我試圖根據時間在文本框中放置三個這樣的名字。我有一切工作,但我有格式問題。需要幫助顯示WPF文本框中列表中的多行代碼

NextInLine.Text = max3?.Select(x => x?.AgentName).ToList().FirstOrDefault() ?? string.Empty; 

這將以last-first格式顯示三個人的姓名。目前它顯示一個人名,有時會閃爍並顯示另外兩個人。我希望所有三個名字按照它們在列表中提供的順序出現在彼此的下面。任何人都可以幫助我格式化。如果需要,我可以在創建列表中添加更多代碼。

XAML:

<TextBlock x:Name="NextInLine" FontFamily="segoe ui" FontSize="20" Margin="0,205,0,0" Height="30" VerticalAlignment="Top" HorizontalAlignment="Right" Width="186" Grid.ColumnSpan="2" TextAlignment="Center" TextWrapping="Wrap" Loaded="DisplayNumber_Loaded" Foreground="White" FontWeight="Bold"/> 

回答

1

試試這個:

NextInLine.Text = string.Empty; 
foreach (var item in max3) 
    NextInLine.Text += item.AgentName + Environment.NewLine; 
+0

有沒有在我的XAML代碼我必須做的,使這項工作什麼?我嘗試了它,當我破碎時,我確切地看到了我想要的東西。但是當我運行應用程序時,文本塊仍然只顯示第一個名字。 – firehotguitar88

+0

你可以請你發佈你的XAML嗎? – mm8

+0

添加了xaml代碼 – firehotguitar88

1

好吧,如果你希望所有的三個名字,你肯定不希望被調用的順序.FirstOrDefault(),因爲這只是給你的第一個。而且你不需要撥打.ToList()就可以了,因爲你不會保留結果。

您真正想要做的是選擇序列中每個代理對象的名稱,並將它們與換行符結合使用。如果我正確記得max3來自您以前的問題,我認爲您不需要「無效條件」運算符。 max3不應該爲空,儘管它可能包含兩個,一個或甚至零個項目。我們根據它們的屬性選擇它中的項目(如果有的話),所以項目本身也不能爲空。

NextInLine.Text = String.Join("\n", max3.Select(x => x.AgentName)); 

你可以把它像這樣:

IEnumerable<String> names = max3?.Select(x => x?.AgentName); 

String text = String.Join("\n", names); 

NextInLine.Text = text;