2012-07-26 27 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; 
     } 
    }