[英]Using jagged arrays
考慮以下代碼。
public string[][] CalculateDistance(string origin, string destination)
{
string[][] result = new string[1][];
string url = "MyUrl"
string requesturl = url;
string content = fileGetContents(requesturl);
JObject o = JObject.Parse(content);
result[0] = new string[2];
result[0][0] = (string)o.SelectToken("routes[0].legs[0].distance.text");
result[0][1] = (string)o.SelectToken("routes[0].legs[0].duration.text");
string[][] myArray = new string[2][];
for (int i = 0; i < result.Length; i++)
{
string[] innerArray = result[i];
}
return result;
}
我正在嘗試返回一個鋸齒狀數組,然后在 wpf 應用程序中的 ListView 上使用該數組。 如果我在for
循環中使用Console.WriteLine(innerArray)
顯示正確的結果。 但是當我在ListView
顯示時
字符串[][] 數組
有人可以告訴我我哪里出錯了。 我以前從未使用過鋸齒狀數組,所以我發現很難弄清楚我做錯了什么。
XMAL 代碼如下所示:
<ListView Name="MyList" HorizontalAlignment="Left" Height="315" Margin="1289,425,-435,0" VerticalAlignment="Top" Width="421">
<ListView.View>
<GridView>
<GridViewColumn Header="Name"
DisplayMemberBinding="{Binding Time}"
Width="100"/>
</GridView>
</ListView.View>
</ListView>
以及將項目添加到我使用的列表的后端:
foreach (var items in GetAddress())
{
MyList.Items.Add(new Distance() { Time = distance.CalculateDistance(items.FromPostCode, items.DestinationPostCode) });
}
距離類看起來像
public class Distance
{
public string[][] Time { get; set; }
//More properties
}
首先,將您的列表視圖更改為這樣的內容以進行正確的數據綁定。 (使用您自己的可選長度和屬性。)
<ListView x:Name="MyList" Height="299" Width="497">
<ListView.View>
<GridView>
<GridViewColumn Header="Miles" Width="100" DisplayMemberBinding="{Binding Miles}"/>
<GridViewColumn Header="Mins" Width="100" DisplayMemberBinding="{Binding Mins}"/>
</GridView>
</ListView.View>
</ListView>
這是鋸齒狀數組的示例使用。
string[][] list = new[] {new[] {"Hello", "Bye"}, new[] {"Hey", "Ho"}, new[] {"Yep", "Nope"}};
MyList.ItemsSource = list.Select(x => new {Miles = x[0], Mins = x[1]});
但我不明白你使用鋸齒狀數組的原因。 您已經在創建 1 個長度。 那沒有意義。 只需使用長度為 2 的單個數組。如果您需要將其用於尚未顯示的其他內容,那么您必須顯示它,然后我也會更新我的答案。 目前我刪除了不必要的部分。
public string[] CalculateDistance(string origin, string destination)
{
string[] result = new string[2];
string url = "MyUrl"
string requesturl = url;
string content = fileGetContents(requesturl);
JObject o = JObject.Parse(content);
result[0] = (string)o.SelectToken("routes[0].legs[0].distance.text");
result[1] = (string)o.SelectToken("routes[0].legs[0].duration.text");
return result;
}
然后當你想要填充項目時。 請注意,您也不需要Distance
類。 如果您只將它用於綁定屬性,那么只需編寫new {}
來創建匿名類型,而不是完美地工作。
foreach (var items in GetAddress())
{
var d = distance.CalculateDistance(items.FromPostCode, items.DestinationPostCode);
MyList.Items.Add(new { Miles = d[0], Mins = d[1] });
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.