작동하지 않습니다. 그래서 수정 된 TreeViewItem은 ImagedTreeViewItem입니다. 이 ImagedTreeViewItem는 이미지-제어 쇼에 대한 이미지를 포함하는 속성이 있습니다. ImagedTreeViewItem도 특성을 갖는 것을 확인 상기 ImagedTreeViewItem-아이콘이 폴더 아이콘 인 경우. 이 속성의 이름은 "IsFolder"입니다.내가 너무 텍스트 앞에 이미지를 표시하도록 수정 된 트 리뷰를 가지고 WPF
내 문제는 다음과 같습니다 I'm Binding the Ancestors-Property (here: The ImagedTreeViewItem)
내가 필요한 데이터를 얻을 수 있습니다. 내 Image-Control의 경우 완벽하게 작동합니다. 상황에 맞는 메뉴는 나중에 추가하지 않았습니다. 기본적으로는 동일한 명령이기 때문에 나는 이유를 이해하지 않습니다. 내가 두 번째 코드에서 바인딩이 조상을 찾을 수 있다고 생각
<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>
:
다음은 XAML에서 내 "ImagedTreeView"의 코드입니다. 비주얼 스튜디오의 출력 창은 나에게 같은 이야기 :
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')
그것은 고맙다! – Hunv