| 

.NET C# Java Javascript Exception

2
Hallo,
ich habe folgendes Problem. In einem Datagrid sollte sich nach dem Doppelklick auf eine Zeile ein Dialog öffnen.

Dabei verwende ich
private void getRowDataFromMouseEvent(object sender, MouseButtonEventArgs e)
{
DependencyObject dep = (DependencyObject)e.OriginalSource; ...


Seit ich den Spalten beim erstellen ein Datatemplate zugewiesen habe, tritt folgender Fehler scheinbar willkürlich auf.

"System.Windows.Documents.Run" ist kein "Visual" oder "Visual3D".

Meine Frage ist jetzt, woran es liegen kann, dass manchmal
e.OriginalSource = {System.Windows.Documents.Run}
und manchmal
e.OriginalSource = {meinProjekt.BindableTextBlock} ist obwohl ich in die selbe Zelle klicke.
News:
27.05.2011
mrmee 745 1 8
2 Antworten
2
Schau dir dazu mal die Routing-Strategien "Tunneling" und "Bubbeling" an.

Beim Tunneling wird das Event vom Wurzelelement durch den ElementTree nach unten zum auslösenden Element weitergeleitet.

Beim Bubbeling "blubbert" das Ereignis vom auslösenden Element nach oben zum Wurzelelement.
28.05.2011
Mario Priebe 6,0k 3 9
Aber Documents.Run ist doch kein teil des visualtree, oder hab ich das falsch verstanden? Ich hangle mich mit visualtree.getparent bis zur datagridrow. Wenn documents.Run ankommt, kommt es zum Fehler weil das kein teil des visualtree ist.
mrmee 28.05.2011
dann hangle dich doch bis zum TextBlock, oder willst das Event auf Run setzen? Dann empfehle ich anstelle Run, Hyperlink zu verwenden
Mario Priebe 28.05.2011
Ich kann mich nirgends hinhangeln wenn originalsource documents.Run ist. Das ist ja mein Problem.
mrmee 28.05.2011
Ich blicke hier leider nicht durch :(, vielleicht kann mir jemand das noch in einfacheren Worten erklären.
mrmee 30.05.2011
2
Du klickst zwar in die selbe Zeile, triffst aber in dem Moment zwei verschiedene Controls. Wenn du direkt auf deinen Text klickst, wirst du den TextBlock treffen, wenn du daneben klickst, triffst du den Container von TextBlock und zwar Run.
27.05.2011
Konstantin 3,7k 8
Danke für die Erklärung. Kann man das irgendwie verhindern?
mrmee 27.05.2011

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH