虽然接触了silverlight有一段时间,但真的还是很少接触到RichTextBox,这次有时间真的好好有时间接触这个控件,发现这个控件真的很不错,以前只知道用TextBox或者是TextBlock,甚至连图文混排都是用他们,今天才发现用RichTextBox这个远远省事了很多,但我同时也发现为什么我用注入的控件为什么都是disable掉了,比如我加入一个Button,为什么我都不能点击?
我以前曾经看过苏鹏的视频,他在录制视频的时候也出现过这个问题,他说可能还是因为silverlight中安全性的问题。但我真的不知道为什么。无论怎么在xaml中设置这个Button 属性中IsEnable="true" 也没有用,用后台绑定Click事件,我就是点不到Button和触发Click事件,后来我自己找到了自己的解决方法,就是在RichTextBox载入完成后再去设置在其中的Button 的IsEnable为true。结果真的可以了.
我也看过 http://www.cnblogs.com/024hi/archive/2009/11/19/1606293.html?login=1 的代码,为什么是RichTextArea(我没有见到过), 而且他那个不会有问题? 希望知道的大侠也能告诉小弟。
我的代码:
<
RichTextBox Name
=
"
myRichTextBox
"
>
<
Paragraph
>
<
Run Text
=
"
"
/>
这是一个简单的RichTextBox,我们如果去看代码,我们发现这个和我们平时用的textBox 和textblock有很大的区别,
他并不是用Text这个属性来进行文本的传入,取而代之,我们看到他是由一个段落一个段落组成的,这也是我当初因为
时间的原因,我并没有把这个控件很好的掌握,直到现在我才发现我当初做的事情完全可以由这个RichTextBox来完成。
Paragraph
>
<
Paragraph
>
<
Run Text
=
"
"
/>
比如可能我要分几种我但当初遇到的问题,现在我用richTextBox,来看看是否可以非常方便的解决:
Paragraph
>
<
Paragraph
>
<
Run Text
=
"
"
/>
1
)当初我们无法对TextBlock或者是TextBox中某几个文字进行设置,现在我们来测试一下,我仅仅用
<
Run Text
=
"
<
"
/>
Run
<
Run Text
=
"
>
"
/>
这个标签就可以实现。
<
Run Foreground
=
"
Blue
"
Text
=
"
这是一个蓝颜色的字符串!
"
/>
看到没有,我很方便边设置了蓝颜色。
Paragraph
>
<
Paragraph
>
<
Run Text
=
"
"
/>
2
)可能我要实现一下控件和文字混合,这个在以前的TextBlock或者是TextBox根本不能啃,因为他们只有Text属性,这个就是一个string类型。
但现在我想试试看,我在里面放一个Button,我们可以通过
<
Run Text
=
"
<
"
/>
InlineUIContainer
<
Run Text
=
"
>
"
/>
这个标签来实现,
这是一个Button
<
InlineUIContainer
>
<
Button Content
=
"
Button
"
Name
=
"
myButton
"
IsEnabled
=
"
True
"
Cursor
=
"
Hand
"
>
<
Button.RenderTransform
>
<
TranslateTransform Y
=
"
4
"
/>
Button.RenderTransform
>
Button
>
InlineUIContainer
>
<
InlineUIContainer
>
<
Button Content
=
"
Button
"
Name
=
"
myButton2
"
IsEnabled
=
"
True
"
Cursor
=
"
Hand
"
Margin
=
"
5,0,0,0
"
>
<
Button.RenderTransform
>
<
TranslateTransform Y
=
"
4
"
/>
Button.RenderTransform
>
Button
>
InlineUIContainer
>
结果我们看到这Button,但我们看到一个很奇怪的地方,就是我们这个Button的状态时disable掉了,所以我们不能点击。
这个问题也在苏鹏的视频中出现过,苏鹏说可能是因为silverlight中安全性的问题,照这样看来难道真的只能放图片了?
现在我再试一个linkButton
<
InlineUIContainer
>
<
HyperlinkButton NavigateUri
=
"
http://www.baidu.com
"
Content
=
"
http://www.baidu.com
"
IsEnabled
=
"
True
"
/>
InlineUIContainer
>
Paragraph
>
RichTextBox
>
光上面代码肯定Button是Disable的,无法点击的
后台代码:
public
partial
class
RichTextBoxDemo : Page
{
public
RichTextBoxDemo()
{
InitializeComponent();
myRichTextBox.Loaded
+=
new
RoutedEventHandler(myRichTextBox_Loaded);
}
void
myRichTextBox_Loaded(
object
sender, RoutedEventArgs e)
{
var inlineButton
=
(Button)myRichTextBox.FindName(
"
myButton
"
);
inlineButton.Click
+=
Button_Click;
inlineButton.IsEnabled
=
true
;
}
//
Executes when the user navigates to this page.
protected
override
void
OnNavigatedTo(NavigationEventArgs e)
{
}
private
void
Button_Click(
object
sender, RoutedEventArgs e)
{
}
}
效果图:(一个Button 是可以点击的,而另一个没有做处理的Button 是不可以点击)
