Template10汉堡包。如何检索要在SecondPage中使用的对象。 什么是实现这一目标的最佳方式。
我尝试将Object转换为新集合,但是收到此错误: 无法从'object'转换为'System.Collections.Generic.IEnumerable'
MainPageViewModel.cs有一个ObservableCollection ScoreData。
<Type>
然后我使用navigationService将其传递给SecondPage
public class MainPageViewModel : ViewModelBase
public ObservableCollection<string> ScoreData { get; set; }
public MainPageViewModel()
{List<string> Data = new List<string>();
Data.Add("10");
Data.Add("5");
ScoreData = new ObservableCollection<string>(Data);
SecondPageViewModel.cs
{NavigationService.Navigate(typeof(Views.SecondPage), ScoreData);}
对象与项目有关,我无法弄清楚如何使用SecondPage.xaml文本框中的对象项。 尝试创建一个新的observablecollection来执行此操作会给我上面的错误显示。
public override async Task OnNavigatedToAsync(object parameter, NavigationMode mode,
IDictionary<string, object> suspensionState)
{
Value = (suspensionState.ContainsKey(nameof(Value)))
? suspensionState[nameof(Value)]?.ToString() : parameter?.ToString();
await Task.CompletedTask;
// ERROR
//cannot convert from 'object' to 'System.Collections.Generic.IEnumerable<string>'
ObservableCollection<string> ScoreData1 = new ObservableCollection<string> (parameter);
}
答案 0 :(得分:0)
以下是一些可以帮助你的代码:
public override async Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary<string, object> suspensionState)
{
if (suspensionState.ContainsKey(nameof(Value)))
{
Value = suspensionState[nameof(Value)]?.ToString();
}
else if (parameter != null)
{
if (parameter is string)
{
Value = parameter?.ToString();
}
else
{
var coll = parameter as IEnumerable<string>;
}
}
await Task.CompletedTask;
}
这可以简化,您可以编辑以满足您的需求。基本上:此代码接受字符串或字符串集合,如果您知道它将始终是一个集合,您可以简化它。此示例也没有正确实现暂停状态下的恢复,但它可以让您了解如何执行此操作。
希望这有帮助。
答案 1 :(得分:0)
try {
var items=parameter as IEnumerable<Score>;
foreach(var item in items)
{
_score.Add(item);
}
}
catch (Exception ex) {
}