[英]C# add items to listview not working
private void showResultsList()
{
IWebElement table = resultFinder.FindElementById("records");
IList<IWebElement> trElements = table.FindElements(By.TagName("tr"));
IList<IWebElement> tdElements;
IList<IWebElement> aElements = table.FindElements(By.TagName("a"));
mainWindow.Dispatcher.Invoke(() =>
{
ListView listView = (ListView)mainWindow.FindName("Search_ResultsList");
ItemCollection resultsListItems = listView.Items;
listView.Items.Clear();
for (int i = 0; i < trElements.Count; i++)
{
IWebElement trElement = trElements[i];
tdElements = trElement.FindElements(By.TagName("td"));
aElements = trElement.FindElements(By.TagName("a"));
string index = (i + 1).ToString();
string text = tdElements[2].Text;
// this line removes the last part of the content, which says "Aggiungi ai preferiti"
string result = text.Substring(0, text.LastIndexOf('\n'));
string hyperLink = aElements[0].GetAttribute("href");
resultsListItems.Add(new ResultsListItem { Index = index, Result = result, HyperLink = hyperLink });
}
});
}
XAML文件
<ListView Name="Search_ResultsList" HorizontalAlignment="Left" Height="886" Margin="10,10,0,0" VerticalAlignment="Top" Width="440" BorderBrush="#FF707070">
<ListView.View>
<GridView>
<GridViewColumn Header="N." Width="30" DisplayMemberBinding="{Binding Index}"/>
<GridViewColumn Header="Result" Width="387" DisplayMemberBinding="{Binding Result}"/>
</GridView>
</ListView.View>
</ListView>
ResultsListItem類
class ResultsListItem : ListViewItem
{
public string Index { get; set; }
public string Result { get; set; }
public string HyperLink { get; set; }
}
我試圖通過將ResultsListItem添加到項目集合中來將此列表顯示為ListView對象。 當我運行程序時,列表不顯示listItems的內容,而只是顯示一個空項目的列表。 我做錯了什么? 提前致謝。
您缺少將ItemsSource設置為Listview的方法,請嘗試此操作
Search_ResultsList.ItemsSource = resultsListItems;
如果要在視圖中顯示表格數據,可以改用DataGrid-
背后的代碼
private void showResultsListWithDataGrid()
{
List<ResultsListItem> listItem = new List<ResultsListItem>();
for(int i=1; i<=10; i++)
{
listItem.Add(new ResultsListItem
{
Index = "index" + i,
Result = "result" + i,
HyperLink = "hyperlink" + i
});
}
this.dataGrid.ItemsSource = listItem; //datagrid should be declared on the xaml file
}
請查看以下詳細信息-DataGrid
正如你已經注意到你的ResultsListItem 不應該繼承ListViewItem
:
public class ResultsListItem
{
public string Index { get; set; }
public string Result { get; set; }
public string HyperLink { get; set; }
}
這是因為將為不是ListViewItem
的ListView
的Items
/ ItemsSource
集合中的每個項目自動生成一個隱式ListViewItem
容器。
如果將ListViewItem
添加到Items
/ ItemsSource
,則不會生成任何容器,這就是為什么您在ListView
中看不到任何值的原因。
另外,數據對象從UI類型繼承也沒有任何意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.