Я использую метку в формах Xamarin. Мне нужно отобразить текст, который в основном является предложением, но часть этой строки содержит число, которое я получаю из вызова api, а остальная часть строки фиксирована.

Я хочу использовать привязку данных для настройки этой части. Пример :

Текст может быть таким: "Вы наверняка можете выиграть {0} долларов".

Значение {0} поступает из API и вы хотите использовать привязку данных для его привязки.

Требуется синтаксис, который будет использоваться для привязки такой строки.

0
Raghav 24 Окт 2018 в 04:16

2 ответа

Лучший ответ

Вы можете использовать модельную привязку к данным в вашей этикетке. Просто так: в xaml:

 <Label Text="{Binding Name,StringFormat='You can win {0} dollars for sure'}" 
       HorizontalOptions="Center"
       VerticalOptions="CenterAndExpand" />

В ContentPage должен связывать контекст:

 nativeDataTemple = new NativeDataTemple();
 BindingContext = nativeDataTemple;

И Molde ( NativeDataTemple вы настроили) должны содержать свойство привязки, например:

private string name = "520";
    public string Name
    {
        set
        {
            if (name != value)
            {
                name = value;
                OnPropertyChanged("Name");
            }
        }
        get
        {
            return name;
        }
    }

И в вашей модели, когда значение имени изменяется в фоновом режиме, добавьте в модель INotifyPropertyChanged и метод

 protected virtual void OnPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }

Затем, где вы хотите изменить данные, просто сделайте это:

nativeDataTemple.Name = "550";

Если есть проблема, вы можете обратиться к этому Официальный документ

1
Junior Jiang - MSFT 24 Окт 2018 в 02:37

Использовать промежутки внутри метки

<Label>
  <Label.FormattedText>
    <FormattedString>
      <Span Text="You can win " />
      <Span Text="{Binding DollarAmount}" />
      <Span Text=" dollars for sure." />
    </FormattedString>
  </Label.FormattedText>
</Label>
0
Jason 24 Окт 2018 в 02:01
52959818