如何在WPF文本框中使用不同的颜色

时间:2011-03-09 20:05:41

标签: .net textbox wpf-controls styling

是否可以让一个只读的WPF文本框显示前三个字符一种颜色,其余7个字符显示不同的颜色。我可以给予降价的最佳例子是201 103/478

客户要求此原因是因为库存号码具有以下格式YYYYMM / 999。客户端以YMM / 999格式引用库存号的90%以上。请求是YYY字符以浅灰色显示,剩余的YMM / 999字符显示为标准黑色。

目前使用文本框控件,因为库存号必须能够复制到剪贴板并允许通过上下文菜单进行排序。如果另一个控件更适合于完成着色,则复制&排序要求然后该解决方案是可以接受的。

2 个答案:

答案 0 :(得分:3)

@Vlad引导我朝着正确的方向提出以下答案。

<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>

答案 1 :(得分:2)

您确定需要一个TextBox吗?如果您可以使用TextBlock,则可以将前3个字符放入不同的Span(可以拥有自己的Foreground画笔)。这样,您就无法通过绑定设置文本。

(如果这很重要,您可以将TextBlock重新设置为TextBox。)