Einen Vorfahren binden, der nicht mit WPF funktioniert

Ich habe eine TreeView, die so geändert wurde, dass auch Bilder vor dem Text angezeigt werden. Mein modifiziertes TreeViewItem heißt also ImagedTreeViewItem. Dieses ImagedTreeViewItem verfügt über eine Eigenschaft, die das anzuzeigende Image für Image-Control enthält. Das ImagedTreeViewItem hat auch eine Eigenschaft, die prüft, ob das ImagedTreeViewItem-Icon ein Ordner-Icon ist. Diese Eigenschaft hat den Namen "IsFolder".

Mein Problem ist:I'm Binding the Ancestors-Property (here: The ImagedTreeViewItem) um die Daten zu bekommen, die ich brauche. Für mein Image-Control funktioniert es einwandfrei, für ein Kontextmenü habe ich später nicht hinzugefügt. Ich verstehe nicht warum, weil es im Grunde das gleiche Kommando ist.

Hier ist der Code meines "ImagedTreeView" in XAML:

<TreeView.Resources>
                <Style TargetType="{x:Type myClasses:ImagedTreeViewItem}">
                    <Setter Property="HeaderedItemsControl.HeaderTemplate">
                        <Setter.Value>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
<!-- Here it works!!! -->
                                    <Image Height="16" Source="{Binding Path=Icon, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type myClasses:ImagedTreeViewItem}}}" Stretch="Fill" Width="16" />
                                    <TextBlock Margin="5,0" Text="{Binding}" />
                                    <StackPanel.ContextMenu>
                                        <ContextMenu>
<!-- Here not :( -->
                                            <MenuItem Command="my:ImagedTreeView.AddFolder" Header="Add Folder"
                                                              IsEnabled="{Binding Path=IsFolder,
                                                              RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type myClasses:ImagedTreeViewItem}}}">
                                                <MenuItem.Icon>
                                                    <Image Source="folderadd16.png" />
                                                </MenuItem.Icon>
                                            </MenuItem>
                                            <!-- ... -->
                                        </ContextMenu>
                                    </StackPanel.ContextMenu>
                                </StackPanel>
                            </DataTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </TreeView.Resources>

Ich denke, die zweite Bindung in diesem Code kann den Vorfahren nicht finden. Das Ausgabefenster von Visual Studio sagt mir dasselbe:

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='....ImagedTreeViewItem', AncestorLevel='1''. BindingExpression:Path=IsFolder; DataItem=null; target element is 'MenuItem' (Name=''); target property is 'IsEnabled' (type 'Boolean')

Antworten auf die Frage(1)

Ihre Antwort auf die Frage