AframeJS, как использовать другие шрифты, такие как Helvetica bold, в текстовом объекте

Не удовлетворенными ответами, я пытался найти один сам ... Ну, похоже, это больше похоже на хак, а затем на решение, но для меня это хорошо работает. Это решение использует MultiBindings особым образом. Сначала это может показаться тонкой кода, но вы можете использовать его с минимальными усилиями.

Сначала я реализовал «IMultiValueConverter»

public class SelectedItemsMerger : IMultiValueConverter
{
    public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
    {
        SelectedItemsContainer sic = values[1] as SelectedItemsContainer;

        if (sic != null)
            sic.SelectedItems = values[0];

        return values[0];
    }

    public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
    {
        return new[] { value };
    }
}

и контейнер SelectedItems Contraper / Wrapper:

public class SelectedItemsContainer
{
    /// Nothing special here...
    public object SelectedItems { get; set; }
}

Теперь мы создаем привязку для нашего ListBox.SelectedItem (Singular). Примечание. Вам необходимо создать статический ресурс для «Конвертера». Это можно сделать один раз для каждого приложения и повторно использовать для всех списков, которым нужен конвертер.

<ListBox.SelectedItem>
 <MultiBinding Converter="{StaticResource SelectedItemsMerger}">
  <Binding Mode="OneWay" RelativeSource="{RelativeSource Self}" Path="SelectedItems"/>
  <Binding Path="SelectionContainer"/>
 </MultiBinding>
</ListBox.SelectedItem>

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

    SelectedItemsContainer selectionContainer = new SelectedItemsContainer();
    public SelectedItemsContainer SelectionContainer
    {
        get { return this.selectionContainer; }
        set
        {
            if (this.selectionContainer != value)
            {
                this.selectionContainer = value;
                this.OnPropertyChanged("SelectionContainer");
            }
        }
    }

И все. Может быть, кто-то видит некоторые улучшения? Что вы думаете об этом?

0
задан Kevin Borghmans 17 January 2019 в 14:06
поделиться

1 ответ

Шрифты fnt или json должны быть включены в файлы png

<a-entity scale=" 30 30 30" 
          position="19 3.5 -19.4" 
          text="font: fonts/helvetica.fnt; fontImage:fonts/helvetica.png
                color: #737373; value: KASBOEK&reg; XVIII, pavilions;">
</a-entity>
0
ответ дан barbsan 17 January 2019 в 14:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: