Question

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

No correct solution

OTHER TIPS

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>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top