Xamarin формирует размах Fomated Label, видимый только после разрешения связывания - PullRequest
0 голосов
/ 21 января 2019

У меня есть несколько меток с форматированным текстом, который содержит несколько таких интервалов, как это

    <Label>
         <Label.FormattedText>
               <FormattedString>
                      <Span Text="Size: "/>
                      <Span FontAttributes="Bold" Text="{Binding Item.Size , Mode=OneWay}"/>
                      <Span FontAttributes="Bold" Text="{Binding Item.Unit, Mode=OneWay}"/>
               </FormattedString>
           </Label.FormattedText>
       </Label>

, и это выглядит так: размер: 32oz. Я хочу, чтобы слово 'размер: 'должен появляться только тогда, когда свойство контекста разрешено из базы данных

1 Ответ

0 голосов
/ 21 января 2019

Вы можете использовать конвертер, чтобы скрыть всю метку. Я предполагаю, что Item.Size является строкой, однако в конвертере вы можете привести к правильному типу. Вот образец

 public class OzViewConverter : IValueConverter
        {

            #region IValueConverter implementation

            public object Convert (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                var test = value as string; //here you can change the cast, depending on type object you are Binding 
                if (!string.IsNullOrEmpty(test))  
                {
                    return true;
                }
                return false;
            }

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

            #endregion
        }

Тогда на вашей странице

<ContentPage.Resources>
    <ResourceDictionary>
        <converter:OzViewConverter x:Key="OzViewConverter" />
    </ResourceDictionary>
</ContentPage.Resources>

 <Label IsVisible="{Binding Item.Unit, Converter={StaticResource OzViewConverter}}">
         <Label.FormattedText>
               <FormattedString>
                      <Span Text="Size: "/>
                      <Span FontAttributes="Bold" Text="{Binding Item.Size , Mode=OneWay}"/>
                      <Span FontAttributes="Bold" Text="{Binding Item.Unit, Mode=OneWay}"/>
               </FormattedString>
           </Label.FormattedText>
       </Label>
...