2010-11-05 3 views
3

Lors de la lecture d'un article sur TreeView et la liaison à un modèle de vue (http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx), il semble que la liaison d'une propriété TreeViewItem IsSelected est possible. Cependant, j'ai le code suivant qui échoue toujours sur Initialize() parce qu'il essaie de définir une propriété en lecture seule?Silverlight TreeViewItem, Liaison à IsSelected, comment?

 <sdk:TreeView Grid.Column="0" Grid.Row="2" Style="{StaticResource TreeViewStyle}" 
        ItemsSource="{Binding tvData}" > 
      <sdk:TreeView.ItemContainerStyle> 
       <Style TargetType="sdk:TreeViewItem"> 
        <Setter Property="IsEnabled" Value="True" /> 
        <Setter Property="IsExpanded" Value="True" /> 
        <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" /> 
       </Style> 
      </sdk:TreeView.ItemContainerStyle> 
      <sdk:TreeView.ItemTemplate> 
       <sdk:HierarchicalDataTemplate ItemsSource="{Binding Children}"> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock Text="{Binding ItemName}" FontWeight="{Binding ItemFontWeight}"/> 
        </StackPanel>       
       </sdk:HierarchicalDataTemplate>      
      </sdk:TreeView.ItemTemplate> 

Répondre

2

Vous ne pouvez pas affecter une fixation via un Setter dans un Style. Effectivement ce que vous faites ici tente de définir une liaison sur la propriété Setter.Value. Xaml ne déduit pas que vous voulez définir une liaison sur la propriété target. À son tour, le Setter suppose que vous essayez de définir une valeur directement à IsSelected dont il sait qu'il est en lecture seule, d'où l'erreur.

Questions connexes