C# windows phone 8.1中具有不同颜色的部分文本

C# windows phone 8.1中具有不同颜色的部分文本,c#,xaml,windows-phone-8.1,C#,Xaml,Windows Phone 8.1,我正在创建一个windows phone 8.1应用程序,该应用程序为用户提供一个文本框。我想用不同的颜色突出显示文本框中使用的所有标签。 所以,只要用户在屏幕上按hash(#),字体颜色就会改变,直到用户按空格键为止。 例如,用户输入: This is a #sample statement. 文本“This is a”部分的字体颜色保持为黑色,但只要用户按#键,颜色就会变为红色(包括散列本身),所有后续字符都是红色字体。 因此,样本以可读颜色显示。一旦用户在单词sample后按空格,字体颜

我正在创建一个windows phone 8.1应用程序,该应用程序为用户提供一个文本框。我想用不同的颜色突出显示文本框中使用的所有标签。 所以,只要用户在屏幕上按hash(#),字体颜色就会改变,直到用户按空格键为止。 例如,用户输入:

This is a #sample statement.
文本“This is a”部分的字体颜色保持为黑色,但只要用户按#键,颜色就会变为红色(包括散列本身),所有后续字符都是红色字体。 因此,样本以可读颜色显示。一旦用户在单词sample后按空格,字体颜色将变回黑色,所有剩余的文本将显示为黑色。
我怎样才能做到这一点?我尝试更改字体颜色,但随后整个文本都会更改,而不仅仅是标签。

对不同颜色的文本使用此XAML格式

> <TextBlock FontSize="30">
>             <Run Foreground="Red" Text="Hi "></Run>
>             <Run Foreground="Green" Text="This "></Run>
>             <Run Foreground="Blue" Text="is "></Run> 
              <Run Foreground="White" Text="Color."></Run> </TextBlock>
>
>             
>             
>              

将此XAML格式用于具有不同颜色的文本

> <TextBlock FontSize="30">
>             <Run Foreground="Red" Text="Hi "></Run>
>             <Run Foreground="Green" Text="This "></Run>
>             <Run Foreground="Blue" Text="is "></Run> 
              <Run Foreground="White" Text="Color."></Run> </TextBlock>
>
>             
>             
>              

将此XAML格式用于具有不同颜色的文本

> <TextBlock FontSize="30">
>             <Run Foreground="Red" Text="Hi "></Run>
>             <Run Foreground="Green" Text="This "></Run>
>             <Run Foreground="Blue" Text="is "></Run> 
              <Run Foreground="White" Text="Color."></Run> </TextBlock>
>
>             
>             
>              

将此XAML格式用于具有不同颜色的文本

> <TextBlock FontSize="30">
>             <Run Foreground="Red" Text="Hi "></Run>
>             <Run Foreground="Green" Text="This "></Run>
>             <Run Foreground="Blue" Text="is "></Run> 
              <Run Foreground="White" Text="Color."></Run> </TextBlock>
>
>             
>             
>              

为什么不使用RichEditBox?下面是我很快想到的:


private void tb\u TextChanged(对象发送方,路由目标)
{
//我们不希望由于
//此处正在进行格式更改
tb.TextChanged-=tb_TextChanged;
var doc=tb.doc;
doc.BatchDisplayUpdates();
尝试
{
字符串文本;
doc.GetText(TextGetOptions.None,out text);
如果(text.Length==0)
返回;
//检查此单词是否以哈希开头
var start=doc.Selection.StartPosition-1;
while(true)
{
if(start<0 | | char.IsWhiteSpace(text[start]))
返回;
如果(文本[开始]='#')
打破
开始--;
}
//找到单词的结尾
var end=doc.Selection.StartPosition;
while(开始


显然,您可以对其进行更多优化。它不支持格式化粘贴的文本,这是您的练习:)

为什么不使用RichEditBox?下面是我很快想到的:


private void tb\u TextChanged(对象发送方,路由目标)
{
//我们不希望由于
//此处正在进行格式更改
tb.TextChanged-=tb_TextChanged;
var doc=tb.doc;
doc.BatchDisplayUpdates();
尝试
{
字符串文本;
doc.GetText(TextGetOptions.None,out text);
如果(text.Length==0)
返回;
//检查此单词是否以哈希开头
var start=doc.Selection.StartPosition-1;
while(true)
{
if(start<0 | | char.IsWhiteSpace(text[start]))
返回;
如果(文本[开始]='#')
打破
开始--;
}
//找到单词的结尾
var end=doc.Selection.StartPosition;
while(开始


显然,您可以对其进行更多优化。它不支持格式化粘贴的文本,这是您的练习:)

为什么不使用RichEditBox?下面是我很快想到的:


private void tb\u TextChanged(对象发送方,路由目标)
{
//我们不希望由于
//此处正在进行格式更改
tb.TextChanged-=tb_TextChanged;
var doc=tb.doc;
doc.BatchDisplayUpdates();
尝试
{
字符串文本;
doc.GetText(TextGetOptions.None,out text);
如果(text.Length==0)
返回;
//检查此单词是否以哈希开头
var start=doc.Selection.StartPosition-1;
while(true)
{
if(start<0 | | char.IsWhiteSpace(text[start]))
返回;
如果(文本[开始]='#')
打破
开始--;
}
//找到单词的结尾
var end=doc.Selection.StartPosition;
while(开始


显然,您可以对其进行更多优化。它不支持格式化粘贴的文本,这是您的练习:)

为什么不使用RichEditBox?下面是我很快想到的:


private void tb\u TextChanged(对象发送方,路由目标)
{
//我们不希望由于
//此处正在进行格式更改
tb.TextChanged-=tb_TextChanged;
var doc=tb.doc;
doc.BatchDisplayUpdates();
尝试
{
字符串文本;
doc.GetText(TextGetOptions.None,out text);
如果(text.Length==0)
返回;
//检查此单词是否以哈希开头
var start=doc.Selection.StartPosition-1;
wh