В Native UWP, Как применить цвет для определенного символа в строке или как отобразить многоцветный текст в элементе управления textbox - PullRequest
0 голосов
/ 11 июля 2019

Мое требование - мне нравится отображать некоторую строку в элементе управления textbox, и я хочу применить цвет для определенного символа в строке. Например, на изображении ниже моя строка ввода - «Моя метка», и я установил цвет текста как «Синий». Теперь мне нужно отобразить определенный символ или строку другим цветом, например «Моя» строка на изображении ниже. Пожалуйста, дайте мне возможное предложение для достижения моего требования.

enter image description here

1 Ответ

0 голосов
/ 12 июля 2019

TextBlock

Более простой способ - использовать теги Span в содержимом вашего TextBlock, благодаря красоте XAML. Смотрите следующее:

<TextBlock Foreground="Red" FontSize="25">
    I'M RED BY DEFAULT <Span Foreground="Blue">BUT NOW I'M BLUE!</Span>
</TextBlock>

Span Tag result

TextBox

Вы можете использовать конвертер для изменения цвета переднего плана содержимого TextBox, если определенное условие выполнено (т. Е. Введен символ '!'), Но это изменит цвет переднего плана всего содержимого, а не просто символа ' !

Не думаю, что это соответствует вашим требованиям, но я все равно опубликую некоторый код на тот случай, если он поможет вам на пути к решению.

конвертер.

public class CharColorConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, string language)
    {

        String ValueContent = String.Empty;

        String ForegroundColor = "#000000";

        String charValue = "!";

        //check if value is null

        if (value != null)
        {                
            ValueContent = (String)value;
            // Check for the char ! and change foreground colour 
            if (ValueContent.Contains(charValue)
            {
                ForegroundColor = "#e40034";
            }
        }

        return ForegroundColor;
    }

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

1026 * XAML *

<TextBox Foreground="{Binding TextValue,Converter={StaticResource CharColorConverter}}" Text="{Binding TextValue}" />
...