选择TreeviewItem时LostFocus无法使用TextBox

时间:2019-07-19 07:03:47

标签: c# wpf

嗨,我需要解决TextBox和treeview之间的问题。当我在TextBox之后选择TreeView时,为什么没有收到LostFocus事件(对于TextBox)?

我曾尝试过与Focusable和focusableManager一起玩很多,但是....它并没有帮助我。

<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Visibility="{Binding VariableA, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource BoolToHiddenConverter}}


<TextBox Width="78" FocusManager.IsFocusScope="True"  
    PreviewTextInput="HatchingDistanceBox_PreviewTextInput"  
    Name="TextBoxAWhoShouldLostFocus" BorderThickness="0.5"  
    BorderBrush="White" MinHeight="30" Height="30" Text="{Binding SelectedFamille.VariableA}"  
    utilities:InputBindingsManager.UpdatePropertySourceWhenEnterPressed="TextBox.Text">  
</TextBox>  

<TreeView  Name="TreeView_After" ItemsSource="{Binding FirstGeneration}" Focusable="True"   Grid.ColumnSpan="3" Grid.Row="2" Grid.Column="0" AllowDrop="True" Background="#282828" Margin="15, 0,0,0" >
    <TreeView.Style>
        <Style TargetType="{x:Type TreeView}">
            <EventSetter Event="GotFocus" Handler="TreeViewItem_GotFocus"></EventSetter>
        </Style>
    </TreeView.Style>

    <i:Interaction.Behaviors>
        <utilities:TreeViewSelectionBehavior SelectedItem="{Binding SelectedFamille}"/>
    </i:Interaction.Behaviors>
    <TreeView.Resources>
        <DataTemplate x:Key="NormalTemplate">
            <StackPanel Orientation="Horizontal" Name="StrategyNamePanel" Mouse.PreviewMouseDown="StrategyNamePanel_MouseDown"   Width="200" Background="#282828" Focusable="True" FocusManager.IsFocusScope="True">
                <TextBox  Name="StrategyNameBox" FontWeight="Normal"  FocusManager.IsFocusScope="True" Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=Explicit}"  MinHeight="30" Height="30" BorderThickness="0"  utilities:InputBindingsManager.UpdatePropertySourceWhenEnterPressed="TextBox.Text"></TextBox>                     
            </StackPanel>
        </DataTemplate>
        <DataTemplate x:Key="EditTemplate">
            <StackPanel  Orientation="Horizontal" Name="NamePanel" Focusable="True" Mouse.PreviewMouseDown="NamePanel_MouseDown"  Width="200" Background="{StaticResource DarkGrey}" FocusManager.IsFocusScope="True">
                <TextBox Name="NameBox" FontWeight="Normal" BorderBrush="{StaticResource DarkOrange}"  FocusManager.IsFocusScope="True" Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=Explicit}" MinHeight="30" Height="30"  utilities:InputBindingsManager.UpdatePropertySourceWhenEnterPressed="TextBox.Text" ></TextBox>                      
            </StackPanel>
        </DataTemplate>
    </TreeView.Resources>
    <TreeView.ItemContainerStyle>
        <Style TargetType="{x:Type TreeViewItem}">
            <EventSetter Event="GotFocus" Handler="TreeViewItem_GotFocus"></EventSetter>
            <EventSetter Event="TreeViewItem.DragOver" Handler="TreeView_After_DragOver"/>
            <EventSetter Event="TreeViewItem.Drop" Handler="TreeView_After_Drop"/>
            <EventSetter Event="TreeViewItem.MouseMove" Handler="TreeView_After_MouseMove"/>
            <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
            <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
        </Style>
    </TreeView.ItemContainerStyle>            
</TreeView>
  1. 当我单击除TreeView之外的所有位置时,文本框中的LostFocus起作用

2)如果我先在treeView中选择一个父级,然后在Treeview Item中选择一个,则lostFocus会起作用。

3)当我先选择一个treeViewItem,然后再选择另一个treeViewItem时,不再有LostFocus事件。

为什么????

0 个答案:

没有答案