2012-07-26 84 views
0
 <HierarchicalDataTemplate x:Key="SchemTemplate"> 
      <TextBlock Text="{Binding Path=path}" /> 
     </HierarchicalDataTemplate> 

     <HierarchicalDataTemplate x:Key="SchemesTemplate"> 
      <TreeViewItem TextBlock.FontStyle="Italic" 
          Header="{Binding name}" 
          ItemsSource="{Binding schemes}" 
          ItemTemplate="{StaticResource SchemTemplate}" /> 
     </HierarchicalDataTemplate> 

     <DataTemplate x:Key="ProjectTemplate">     
      <TreeView> 
       <TreeViewItem Header="{Binding Path=name}" 
           ItemsSource="{Binding schemes}" 
           ItemTemplate="{StaticResource SchemesTemplate}"> 
       </TreeViewItem> 
      </TreeView>    
     </DataTemplate> 

选择树型视图:如何使用上选择

 <ListBox Style="{StaticResource ListProjectsStyle}"       
       x:Name="projects" 
       Grid.Row="0" Grid.Column="0" 
       ItemsSource="{Binding projects_models, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
       ItemTemplate="{StaticResource ProjectTemplate}" 
       SelectedItem="{Binding active_project, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"> 
     </ListBox> 

当我点击过的TreeView鼠标右键,然后ListBox的的SelectedItem改变,但左击做到这一点。左击将焦点放在TreeView上或展开TreeView项目。如何在焦点位于TreeView时将焦点更改为ListBox?

回答

0

解决方案:

  <ListBox.Resources> 
       <Style TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource ListBoxItem}"> 
        <EventSetter Event="ListBoxItem.PreviewMouseLeftButtonDown" 
           Handler="ListBoxItem_Select" /> 
       </Style> 
      </ListBox.Resources> 


private void ListBoxItem_Select(object sender, MouseEventArgs e) 
    { 
     var mouseOverItem = sender as ListBoxItem; 
     if (mouseOverItem != null&& e.LeftButton == MouseButtonState.Pressed) 
     { 
      mouseOverItem.IsSelected = true; 
     } 
    }