0

I have a problem that I cannot see why it's not working. I have a 3 level Treeview with a converter which allow me to invert the two first level. On this TreeView I'm trying to bing the IsSelected Property but for a reason I don't understand it is never call in the ViewModel.

Here is the xaml.

<TreeView Margin="0,0,0,0" Padding="0,7,0,7" BorderBrush="{x:Null}" Background="#FFF8FAFB" Name="BusinessCaseTreeView"> <TreeView.ItemContainerStyle> <Style TargetType="{x:Type TreeViewItem}"> <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" /> </Style> </TreeView.ItemContainerStyle> <TreeView.ItemsSource> <MultiBinding Converter="{converter:BusinessCasesConverter}"> <Binding Path="BusinessCases"></Binding> <Binding Path="GroupByCreditor"></Binding> </MultiBinding> </TreeView.ItemsSource> <TreeView.Resources> <HierarchicalDataTemplate DataType="{x:Type converter:BusinessCaseTreeViewableFirst}" ItemsSource="{Binding SecondLevel}"> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding FirstLevel.Id}" Margin="10,0,0,0" Foreground="#FF03577A" FontWeight="Bold" /> <TextBlock Text="-" Margin="5,0,0,0" Foreground="#FF03577A" FontWeight="Bold"/> <TextBlock Text="{Binding FirstLevel.FirstName}" Margin="5,0,0,0" FontWeight="Bold" Foreground="#FF03577A" /> <TextBlock Text="{Binding FirstLevel.LastName}" Margin="5,0,0,0" FontWeight="Bold" Foreground="#FF03577A" /> </StackPanel> </HierarchicalDataTemplate> <HierarchicalDataTemplate DataType="{x:Type converter:BusinessCaseTreeViewModelSecond}" ItemsSource="{Binding BusinessCases}"> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding SecondLevel.Id}" Margin="10,0,0,0" Foreground="#FF095A7C" FontWeight="Bold" /> <TextBlock Text="-" Margin="5,0,0,0" Foreground="#FF095A7C" FontWeight="Bold"/> <TextBlock Text="{Binding SecondLevel.FirstName}" Margin="5,0,0,0" FontWeight="Bold" Foreground="#FF095A7C" /> <TextBlock Text="{Binding SecondLevel.LastName}" Margin="5,0,0,0" FontWeight="Bold" Foreground="#FF095A7C" /> </StackPanel> </HierarchicalDataTemplate> <DataTemplate DataType="{x:Type business:BusinessCase}"> <StackPanel Orientation="Horizontal"> <TextBlock Text="(" Margin="10,0,0,0" Foreground="#FF0B89BD" FontWeight="Bold" /> <TextBlock Text="{Binding Id}" Margin="1,0,0,0" Foreground="#FF0B89BD" FontWeight="Bold" /> <TextBlock Text=")" Margin="2,0,0,0" Foreground="#FF0B89BD" FontWeight="Bold"/> <TextBlock Text="{Binding CreationDate, StringFormat='{}{0:dd MMMM yyyy}'}" Margin="5,0,0,0" Foreground="#FF0B89BD" /> <TextBlock Text="-" Margin="5,0,0,0" Foreground="#FF0B89BD" FontWeight="Bold"/> <TextBlock Text="{Binding ClosureDate, StringFormat={}{0:dd MMMM yyyy}}" Margin="5,0,0,0" Foreground="#FF0B89BD" /> </StackPanel> </DataTemplate> </TreeView.Resources> </TreeView> 

I never arrive on the IsSelected setter in my ViewModel. If you have any idea, there are welcomed.

Thanks in advance

1
  • Are there any binding errors in your output window? Commented Mar 3, 2014 at 21:14

1 Answer 1

1

It might have something to do with the fact you're doing it in ItemContainerStyle. Also, make sure IsSelected is in all of the types being added to the treeview

Try this:

<TreeView> <TreeView.Resources> <Style TargetType="{x:Type TreeViewItem}"> <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" /> </Style> </TreeView.Resources> ..... </TreeView> 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.