Как иметь разные цвета в текстовом поле WPF - PullRequest
1 голос
/ 09 марта 2011

Возможно ли, чтобы текстовое поле WPF, предназначенное только для чтения, отображало первые 3 символа одним цветом, а остальные 7 символов другим цветом. Лучший пример, который я могу привести с уценкой: 201 103/478 .

Причина, по которой клиент попросил об этом, заключается в том, что номера акций имеют следующий формат ГГГГММ / 999. 90 +% времени клиент обращается к номеру запаса в формате YMM / 999. Запрос состоит в том, что символы YYY отображаются светло-серым цветом, а остальные символы YMM / 999 отображаются стандартным черным цветом.

В настоящее время используется текстовое поле управления, так как номер запаса должен быть в состоянии скопировать в буфер обмена и разрешить сортировку через контекстное меню. Если другой элемент управления больше подходит для выполнения требований к окраске, копированию и сортировке, тогда это решение приемлемо.

Ответы [ 2 ]

3 голосов
/ 10 марта 2011

@ Влад повел меня в правильном направлении, чтобы найти следующий ответ.

<TextBlock HorizontalAlignment="Right">
    <TextBlock.ContextMenu>
        <ContextMenu>
            <MenuItem Header="Sample"/>
        </ContextMenu>
    </TextBlock.ContextMenu>
    <Span Foreground="Gray"><Run Text="{controls:Binding Path=StockNumberPrefix}"/></Span><Run Text="{controls:Binding Path=ShortStockNumber}" Margin="0"/>
</TextBlock>
2 голосов
/ 09 марта 2011

Вы уверены, что вам нужен именно TextBox? Если бы вы могли использовать TextBlock, вы бы смогли поместить первые 3 символа в другую Span (которая может иметь собственную кисть Foreground). Таким образом, у вас не будет возможности задавать текст через привязки.

(Вы можете изменить стиль TextBlock, чтобы он выглядел как TextBox, если это имеет значение.)

...