Ich erstelle ein UserControl für ein reichhaltiges TreeView (eines mit Kontextmenüs zum Umbenennen von Knoten, Hinzufügen von untergeordneten Knoten usw.). Ich möchte in der Lage sein, dieses Steuerelement zu verwenden, um hierarchische Datenstrukturen zu verwalten oder zu navigieren, die ich erstellen werde. Im Moment habe ich es für jede Datenstruktur arbeiten, die die folgende Schnittstelle implementiert (die Schnittstelle nicht tatsächlich umgesetzt werden müssen, jedoch nur das Vorhandensein dieser Mitglieder erforderlich ist):Variablenbindungen in WPF
interface ITreeItem
{
string Header { get; set; }
IEnumerable Children { get; }
}
Da ist in meinem Usercontrol, verwende ich Vorlagen mein Baum auf die Datenstruktur zu binden, etwa so:
<TextBlock x:Name="HeaderTextBlock" Text="{Binding Path=Header}" />
Was ich den Namen jedes dieser Elemente in meinem RichTreeView tun möchte, ist zu definieren, so dass es zu einer Reihe von unterschiedlichen Datenstrukturen anzupassen, so:
class MyItem
{
string Name { get; set; }
ObservableCollection<MyItem> Items;
}
<uc:RichTreeView ItemSource={Binding Source={StaticResource MyItemsProvider}}
HeaderProperty="Name" ChildrenProperty="Items" />
Gibt es eine Möglichkeit, den Pfad einer Bindung in einem UserControl als eine öffentliche Eigenschaft dieses Benutzersteuerelements verfügbar machen? Gibt es einen anderen Weg, dieses Problem zu lösen?