2011-03-15 40 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

相關問題