2011-03-15 63 views
0

在Silverlight中,我们可以使用InlineUIContainer将图像插入到RichTextBox中。 现在我试图添加一些处理程序到这个图像。这里是我的代码:将处理程序添加到Silverlight中RichTextBox中的图像

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

但是,当我们移动鼠标进入这个图像,什么都没有发生。 我想添加的是一些处理程序,如调整大小,单击和拖放。可能吗? 我很欣赏任何答案。谢谢!

+0

它已经是半个月了...欢迎任何评论... – Mrainy 2011-03-27 18:33:35

+0

我目前正在研究类似问题。这*可能会在这里发生。在版本注释中,[MSDN for UIElement.MouseWheel](http://msdn.microsoft.com/en-us/library/system.windows.uielement.mousewheel(v = VS.95).aspx),它声明“Silverlight 4具有对MouseWheel进行特定控制处理的控件,这意味着在某些情况下,您的用户代码事件处理程序不会被调用,因为控件会将事件标记为已处理。您仍然可以处理这些情况,但是您必须特别使用AddHandler并把事件处理为真。“祝你好运。 – seekerOfKnowledge 2011-04-20 20:22:45

回答

1

另外,我昨晚为我的同样问题提出了一个新的解决方案。我检查了是否在我的一个图像上单击(RTB_OnLeftMouseDown),这是基于循环BlockControl中的所有图像并查看块控件的viewRect。然后,我调整了ReadOnly模式,直到再次点击图像(返回编辑模式)。这使我可以将小调整大小的装饰物放到图像上并获取图像上的所有鼠标事件。这是一个相当复杂的解决方案,所以你可能想要走一条不同的路线。

+0

非常感谢!你的答案是有帮助的。我同意我们必须将点击事件添加到RTB中,并考虑一些策略来定位我们尝试点击的图片。我会在稍后尝试您的解决方案。 – Mrainy 2011-04-27 16:28:58

0

没有任何反应的原因是因为在RichEditbox的编辑模式下(IsReadOnly == false)在richtextbox中没有事件触发。你可以解决这个问题,但它很复杂。您将事件处理程序放在RichTexTBox上,然后在richtextbox中获取图像的可视矩形,并查看鼠标事件参数点是否位于图像中。的

编辑更好的解释,为什么你不能:http://forums.silverlight.net/forums/p/224490/541921.aspx

0

RichTextBoxes的FlowDocument的是禁用的,因此没有事件被处理,请参阅我的this question获取更多信息和可能的解决方法。

+0

谢谢H.在我的应用程序中,我没有使用FlowDocument。 – Mrainy 2011-04-27 16:30:33

+0

H.B.这是一个silverlight问题,你不能在silverlight中触摸flowdocument。 (我现在可以给其他用户添加评论) – shane 2011-04-27 16:51:00

+0

@shane:噢,有太多东西你目前在Silverlight中无法做到,下次我会再试一次...... – 2011-04-27 17:25:56

相关问题