in der folgenden StrukturAnruf Eltern Methode von Kind-Element
<Border ...>
<ItemsControl>
<ItemsControl.Template>
<DataTemplate>
<ACustomElement>
<Border MouseLeftButtonDown="method1">
</ACustomElement>
</DataTemplate>
</ItemsControl.Template>
</ItemsControl>
</Border>
Ich möchte von innen method1 eine öffentliche Methode in der ACustomElement Klasse() aufzurufen.
Was ich bisher in method1 versucht():
var cr = ((Border)sender).Parent;
cr.method2();
method2 ist eine öffentliche Methode in meiner ACustomElement Klasse. Aber es scheint die Methode nicht zu erkennen.
Ich erhalte die folgende Fehlermeldung:
'DependencyObject' does not contain a definition for 'method2' and no extension method 'method2' accepting a first argument of type 'DependencyObject' could be found (are you missing a using directive or an assembly reference?)
Vorschläge, wie dieses Problem zu lösen? Sicherlich fehlt mir nur eine Besetzung oder etwas anderes ...
Edit: Die folgenden Stil wird immer auf ACustomElement angewendet werden:
<Style TargetType="{x:Type c:ACustomElement}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type c:ACustomElement}">
<ContentPresenter Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content}" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Die "Parent" Eigenschaft gibt zurück ein DependencyObject.Wirf es in deinen "ACustomElement" -Typ – nkoniishvt
@nkoniishvt: casting cr zu ACustomElement löst das Problem nicht, wie in meinem Kommentar in Artioms Answer erwähnt. – tg24
Was genau ist ACustomElement? Ist es eine Kontrolle? – mm8