无法在HierarchicalDataTemplate中键入文本框

时间:2013-10-02 19:01:02

标签: wpf textbox treeview hierarchicaldatatemplate

我无法在树视图中输入文本框。某些键可以工作,例如空格和退格键,但没有字符键可以工作。文本框获取所有键的PreviewKeyDown和KeyDown事件(以及相应的up)。

绑定工作正常,我没有错误或异常。我尝试在模板和Window本身中注释掉InputBindings,但这没有帮助。顺便说一句,它们似乎也不起作用,可能是一个相关的问题。

文本框在HierarchicalDataTemplate中定义,其可见性由DataTrigger根据文章here进行更改。

<HierarchicalDataTemplate x:Key="projectItemTemplate" ItemsSource="{Binding Path=Children}">
     <StackPanel Orientation="Horizontal">
        <TextBlock Name="tb" Text="{Binding Path=Name}"/>
        <TextBox Name="etb" Text="{Binding Path=Name, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Visibility="Collapsed" PreviewKeyDown="etb_PreviewKeyDown" KeyDown="etb_KeyDown">
           <TextBox.InputBindings>
              <KeyBinding Key="Enter" Command="{Binding Path=RenameCommand}"/>
              <KeyBinding Key="Return" Command="{Binding Path=RenameCommand}"/>
           </TextBox.InputBindings>
        </TextBox>
     </StackPanel>
     <HierarchicalDataTemplate.Triggers>
        <MultiDataTrigger>
           <MultiDataTrigger.Conditions>
              <Condition Binding="{Binding Path=IsEditingName}" Value="True"/>
              <Condition Binding="{Binding Path=IsActive}" Value="True"/>
           </MultiDataTrigger.Conditions>
           <Setter TargetName="tb" Property="Visibility" Value="Collapsed"/>
           <Setter TargetName="etb" Property="Visibility" Value="Visible"/>
        </MultiDataTrigger>
     </HierarchicalDataTemplate.Triggers>
  </HierarchicalDataTemplate>

1 个答案:

答案 0 :(得分:0)

答案很简单,我忘了用WPF窗口调用ElementHost.EnableModelessKeyboardInterop。