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のフォーカスを変更するにはどうすればよいですか?

4

1 に答える 1

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;
        }
    }
于 2012-07-31T11:40:43.253 に答える