Добавьте жестко закодированный текст к отловленному параметру, используя Prism в Xamarin Forms - PullRequest
0 голосов
/ 03 декабря 2018

Я успешно передаю параметры моей второй модели просмотра.Однако мне нужно добавить несколько жестко закодированных текстов по одному из параметров.

Вот как я ловлю мою модель из моей второй модели представления:

public override void OnNavigatedTo(INavigationParameters parameters)
    {
        TodoItem = (TodoItem)parameters["Todo"];
    }

Здесь я устанавливаю значения во второй модели просмотра.Я попытался установить Title + "Test" = value.name, но он дает ноль:

private TodoItem _todoItem;
public TodoItem TodoItem
    {
        get => _todoItem;
        set
        {
            _todoItem = value;
            Title = value.name;
        }
    }

Это строка заголовка, которую я связал с Xaml:

private string _title;
    public string Title
    {
        get { return _title; }
        set { SetProperty(ref _title, value); }
    }

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Установка этого параметра как @Junior Jiang - MSFT упомянул сработало:

var title = value.name;
            Title = title + "Test";
0 голосов
/ 03 декабря 2018

Вам просто нужно добавить оператор объединения для защиты от нулевых значений.

private TodoItem _todoItem;
public TodoItem TodoItem
{
   get => _todoItem;
   set
   {
     _todoItem = value;
     Title = value?.name ?? "";
   }
 }

Если вы хотите изменить свой подход на более декларативный, вы можете использовать конвертер.

    public class PrefixConverter : IValueConverter
    {
        public string Prefix { get; set; }
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return Prefix + value?.ToString();
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }

Итак, вы можете использовать в своем XAML

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:conv="clr-namespace:Sample.Converters"
             x:Class="Sample.MainPage"
             xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
             prism:ViewModelLocator.AutowireViewModel="True"
             Title="{Binding TodoItem.name,Converter={StaticResource PrefixConverter}}">
    <ContentPage.Resources>
        <ResourceDictionary>
            <conv:PrefixConverter x:Key="PrefixConverter" Prefix="Test"/>
        </ResourceDictionary>
    </ContentPage.Resources>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...