Ich versuche, eine Reihe von gebundenen Spalten in einem RadGridView zu erstellen, und ich verwende eine Vorlage, um Hyperlinks in zwei der Spalten zu erstellen. Hier ist im Grunde, was ich habe:WPF-Vorlagen und Bindung an DataContext in einer GridView
<telerik:GridViewDataColumn IsReadOnly="True" UniqueName="Distributor" DataContext="{Binding Distributor}" CellTemplate="{StaticResource linkTemplate}"/>
und
<DataTemplate x:Key="linkTemplate">
<TextBlock>
<Hyperlink DataContext={TemplateBinding DataContext} Click="Hyperlink_Click">
<TextBlock Text="{Binding Name}" />
</Hyperlink>
</TextBlock>
</DataTemplate>
Die RadGridView selbst ist verpflichtet, auf eine Reihe von Objekten, die DistributorContainer haben, unter anderem ein Distributor Eigentum. Das linkTemplate verweist direkt auf Eigenschaften im Distributor-Objekt, sodass der Datenkontext des Hyperlinks auf den Verteiler festgelegt werden muss.
Leider ist der Datenkontext des Hyperlinks das DistributorContainer-Objekt. Ich verwende das linkTemplate (sowie den Hyperlink_Click-Handler) für Listen, die an Listen von Distributoren binden, und ich würde diese Vorlage gerne wiederverwenden, da es im Grunde dasselbe ist.
Warum erhält die Vorlage, die den Verteiler als seinen DataContext durch das TemplateBinding in der GridViewDataColumn erhält, nicht? Hier
funktionierts und stellt ein Mittel eine einzige Vorlage für die Gridview zu verwenden, sondern ist gibt es eine Möglichkeit, nur an den DataContext des Vorlagenstamms zu binden? Dies würde der Vorlage viel mehr Flexibilität geben. – Jake
Da DataContext des übergeordneten Templates (Zelle in diesem Fall) dem DataContext der Zeile entspricht, können Sie auf diese Weise kein gewünschtes Ergebnis erzielen. –