【问题标题】:Can't type in textbox in HierarchicalDataTemplate无法在 HierarchicalDataTemplate 中输入文本框
【发布时间】:2013-10-02 19:01:02
【问题描述】:

我无法在树形视图上输入文本框。有些键确实有效,例如空格键和退格键,但没有字符键有效。文本框正在获取所有键的 PreviewKeyDown 和 KeyDown 事件(以及 up 等价物)。

绑定工作正常,我没有收到任何错误或异常。我尝试在模板和窗口本身中注释掉 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>

【问题讨论】:

  • 尝试删除绑定中的事件处理程序和UpdateSourceTrigger。还是什么都没有?
  • 没有帮助,没有。事件处理程序是在注意到问题后添加的,并且只是向控制台输出一条消息。删除 UpdateSourceTrigger 也不会改变控件的行为,我也没想到会这样。
  • 将内容缩减为仅显示 TextBlcok 和 TextBox 也无济于事。
  • 如果您将另一个TextBox 添加到StackPanel,一个没有任何类型的绑定或触发器,您可以输入那个吗?
  • 不,这也无济于事。

标签: wpf textbox treeview hierarchicaldatatemplate


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 2017-04-12
    • 1970-01-01
    相关资源
    最近更新 更多