在 Silverlight 中向 RichTextBox 中的图像添加处理程序
在 Silverlight 中,我们可以在 RichTextBox< 中插入图像/a> 通过使用 InlineUIContainer。 现在我正在尝试向该图像添加一些处理程序。这是我的代码:
InlineUIContainer contain = new InlineUIContainer();
Image image = new Image();
ImageSource img = new BitmapImage(new Uri(Source,UriKind.RelativeOrAbsolute));
image.SetValue(Image.SourceProperty, img);
image.MouseEnter +=new MouseEventHandler(image_MouseEnter);
container.Child = image;
rtb.Selection.Insert(contain);
但是,当我们移动鼠标进入该图像时,没有任何反应。 我想要添加的是一些处理程序,例如调整大小、单击和拖放。是否可以? 我很感激任何答案。谢谢!
In the Silverlight , we can insert an image in a RichTextBox by using a InlineUIContainer.
Now I'm trying to add some handlers to this image. Here is my code:
InlineUIContainer contain = new InlineUIContainer();
Image image = new Image();
ImageSource img = new BitmapImage(new Uri(Source,UriKind.RelativeOrAbsolute));
image.SetValue(Image.SourceProperty, img);
image.MouseEnter +=new MouseEventHandler(image_MouseEnter);
container.Child = image;
rtb.Selection.Insert(contain);
However, when we move our mouse enter this image, nothing happen.
What I'm trying to add are some handlers like resize, click, and drag and drop. Is it possible?
I appreciate for any answers. Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
另外,昨晚我针对同样的问题想出了一个新的解决方案。我通过循环遍历 BlockControl 中的所有图像并查看块控件的 viewRect 来检查是否在其中一张图像上单击 (RTB_OnLeftMouseDown)。然后,我在调整大小时进入只读模式,直到再次单击图像(返回编辑模式)。这使我可以在图像上放置一些调整大小的装饰器,并获取图像上的所有鼠标事件。但这是一个非常复杂的解决方案,因此您可能想要走不同的路线。
Also, I came up with a new solution to my same problem last night. I check out if I'm clicking (RTB_OnLeftMouseDown) on one of my images based on looping through all images in the BlockControl and looking at the block control's viewRect. Then I go into ReadOnly mode while I resize until I click off of the image again (go back to edit mode). This allows me to put little resize adorners onto the image and get all of the mouse events on the image. It's a pretty complicated solution though, so you might want to go a different route.
RichTextBoxes 的 FlowDocument 已禁用,因此不会处理任何事件,请参阅 我的这个问题以获取更多信息和可能的解决方法。
The FlowDocument of RichTextBoxes is disabled, hence no events are processed, see this question of mine for more info and a possible workaround.
没有任何反应的原因是在 Richtextbox 上的编辑模式 (IsReadOnly == false) 下,richtextbox 内不会触发任何事件。你可以解决这个问题,但很复杂。您将事件处理程序放在 RichTexTBox 上,然后获取 RichTextBox 中图像的可视矩形,并查看鼠标事件参数点是否在图像内部。
编辑更好的解释为什么不能:http://forums.silverlight.net /forums/p/224490/541921.aspx
The reason nothing happens is because in EDIT mode (IsReadOnly == false) on a richtextbox no events fire inside the richtextbox. You can get around this but it's complicated. You put the event handlers on the RichTexTBox, then you get the visual rectangle of the images in the richtextbox and see if the mouse event args point is inside a image.
Edit better explanation of why you can't: http://forums.silverlight.net/forums/p/224490/541921.aspx