<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 :(得分: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;
}
}