Параметры навигации и диалогов на самом деле равны IEnumerable<KeyValuePair<string, object>>
. Так что это означает для вас?
Для начала это означает, что любой данный ключ может содержать от одного до многих фактических значений.
navigationParameters.Add("message", "Prism is great for Wpf apps");
navigationParameters.Add("message", "Prism is great for Xamarin.Forms apps");
navigationParameters.Add("message", "Prism is great for Uno and WinUI apps");
Во-вторых, это означает, что вы можете передать буквально все, что захотите, в качестве параметра.
var messages = new[] {
"Prism is great for Wpf apps",
"Prism is great for Xamarin.Forms apps",
"Prism is great for Uno and WinUI apps"
};
navigationParameters.Add("message", messages);
Как вы, наверное, знаете, вы можете вытащить параметры обратно, например:
var messages = navigationParameters.Get<IEnumerable<string>>("message");
Если бы вы использовали этот метод, используя первый способ добавления сообщений, вы, вероятно, получили бы исключение, потому что оно поразило бы первое значение и увидело бы, что это не тот же тип. Если вы добавите его вторым способом, это все равно будет работать, потому что вы добавили IEnumerable<string>
.
Однако есть второй метод, который отлично подходит для того, что вы ищете, и будет работать независимо от того, как были получены ваши значения. добавлено.
var messages = navigationParameters.GetValues<string>("message");
Метод GetValues
возвращает IEnumerable заданного типа generi c.