2012-07-03 4 views
0

Как привязать свойство ViewModel к элементу в HierarchicalDataTemplate о наличии Treeview (свойство находится вне HierarchicalDataTemplate.Itemsource)Как связать свойство ViewModel с элементом в иерархическом файле DataTemplate дерева?

это пример и probelm в этой строке: Visibility="{Binding IsCheckBoxVisible , RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}, Converter={StaticResource debuger}}"/>

<UserControl ....> 
<Grid> 
    <TreeView ItemsSource="{Binding Roots}" Grid.Row="0"> 
     <TreeView.ItemContainerStyle> 
     </TreeView.ItemContainerStyle> 
     <TreeView.ItemTemplate > 
      <HierarchicalDataTemplate ItemsSource="{Binding ConfigedChildren}"> 
       <StackPanel Orientation="Horizontal" > 
        <CheckBox IsChecked="{Binding IsChecked}" Visibility="{Binding IsCheckBoxVisible, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}, Converter={StaticResource debuger}}"/> 
        <Label Content="{Binding Title}"/> 
       </StackPanel> 
      </HierarchicalDataTemplate> 
     </TreeView.ItemTemplate> 
    </TreeView> 
</Grid> 

+0

см. Ниже http://wpftution.blogspot.in/2012/06/hierarchical-databinding-in-treeview.html –

+0

@ David Bekham: я знаю, как связать иерархический элемент в Treeview! Мой вопрос! –

+0

@raha Вы сталкиваетесь с проблемой с привязкой RelativeSource? 'RelativeSourceBinding' смотрит путь. – akjoshi

ответ

1
<CheckBox IsChecked="{Binding IsChecked}" Visibility="{Binding DataContext.IsCheckBoxVisible, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}, Converter={StaticResource debuger}}"/> 

DataContext.IsCheckBoxVisible. Надеюсь, что это сработает

+0

выше, чем вы привязываетесь к UserControl, а не к ViewModel UserControl, следовательно, он не работает. DataContext привязан к ViewModel и, следовательно, получит это свойство «CompletePath» в нем – ethicallogics

+0

@ ethicallogics: yes.you правильно, это была смешная ошибка, я сделал это раньше! И повторю снова и трачу время! Спасибо. –

+0

в любое время брата, его ошибки, с которыми мы учимся. – ethicallogics