虽然接触了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(我没有见到过), 而且他那个不会有问题? 希望知道的大侠也能告诉小弟。
我的代码:
View Code
< 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的,无法点击的
后台代码:
View Code
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 是不可以点击)