| 

.NET C# Java Javascript Exception

3
Hallo Zusammen,


ich habe ein kleines Problem mit TempalteBinding in einem CustomControl.

Ich habe eine Property wie folgt definiert:
public static readonly DependencyProperty GroupNameProperty = 
DependencyProperty.Register("GroupName",
typeof(string),
typeof(DynamicViewItem),
new PropertyMetadata("DynamicViewItem"));
public string GroupName
{
get { return (string)GetValue(GroupNameProperty); }
set { SetValue(GroupNameProperty, value); }
}


Das Template für mein Control (leitet von ItemsControl ab) ist folgendes:
<Style TargetType="local:DynamicViewItem">
<Setter Property="GroupName" Value="DynamicViewItem" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<toolkit:Expander x:Name="PART_HeaderedContentControl"
Style="{StaticResource DynamicViewExpanderStyle}"
Header="{TemplateBinding GroupName}">
<ItemsPresenter />
</toolkit:Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemsPanel">
<Setter.Value>
<ItemsPanelTemplate>
<toolkit:WrapPanel Name="WrapPanel1" Orientation="Horizontal" />
</ItemsPanelTemplate>
</Setter.Value>
</Setter>
<Setter Property="ItemTemplate">
<Setter.Value>
<DataTemplate>
<ContentPresenter />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>

Man sieht, wie ich versuche per TemplateBinding die Property GroupName an die Header-Property des Expanders zu binden.

Laut diversen Tutorials habe ich folgendes Attribut an mein CustomControl zu setzen:
[TemplatePart(Name = "PART_HeaderedContentControl", Type = typeof(Expander))]

Dabei entspricht der Part-Name dem x:Name des Expanders. Beschrieben ist es zumindest hier:
http://www.kunal-chowdhury.com/2011/04/how-to-implement-template-binding-in.html

Führe ich das jetzt allerdings aus, erhalte ich folgende Fehlermeldung:
Die Eigenschaft "GroupName" wurde in Typ "System.Windows.Controls.Control" nicht gefunden.
Die Zeilen und Positionsangaben verweisen eindeutig auf das TemplateBinding auf meine Property.

Warum tut das nicht? Meinem Verständis nach sollte ich doch auf alle Properties meines Controls zugreifen können, oder? Was habe ich vergessen?
News:
16.06.2011
Jürgen Gutsch 1,1k 4 7
Etwas irritierend ist, dass das ganz mit einem CostumControl funktioniert, dass con Control erbt. Handelt es sich aber um ein ItemsControl bekomme ich besagte Fehlermeldung.
Jürgen Gutsch 17.06.2011
Auf die Beantwortung dieser Frage war ein Kopfgeld in Höhe von 50 Reputationspunkten ausgesetzt. Das Kopfgeld wurde bereits vergeben.
1 Antwort
1
Wie immer liegt die Lösung direkt vor Augen und keiner sieht sie ;-)
Das ControlTemplate bracht die Angabe des TargetTypes, ansonsten werden die Properties beim Typ "Control" gesucht.
Folgende Angabe fehlte:
<ControlTemplate TargetType="local:DynamicViewItem"> ...
21.06.2011
Jürgen Gutsch 1,1k 4 7

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