【发布时间】:2016-08-30 01:47:50
【问题描述】:
我有以下代码
<DockPanel.Style>
<Style TargetType="DockPanel">
<Setter Property="Visibility" Value="Hidden"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=flowTreeView, Path=SelectedItem.hasInput}" Value="1" >
<Setter Property="Visibility" Value="Visible"/>
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=txtBoxPopUp}"/>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=flowTreeView, Path=SelectedItem.hasInput}" Value="0" >
<Setter Property="Visibility" Value="Hidden"/>
</DataTrigger>
</Style.Triggers>
</Style>
</DockPanel.Style>
在我提出问题之前,这个应用程序有一个带有一些节点的 TreeView。当我选择一个需要用户输入的节点时,它会显示以前的 DockPanel。 DockPanel 还在 DockPanel.Style 下方包含一个 StackPanel。
如您所见,此 DockPanel 以 Visibility=Hidden 开头。然后,当 SelectedItem.hasInput 的 value=1 触发触发器时,它将 DockPanel 的 Visibility 设置为 Visible 并且应该聚焦我的文本框 txtBoxPopUp。问题是当我单击节点时,什么也没有发生(不显示 DockPanel)。但是,如果我删除第二个 Setter(将焦点放在 TextBox 上),则 DockPanel 会正常显示。其他奇怪的行为,使用 2 个设置器,如果我多次单击需要用户输入的节点,它会带来带有 TextBox 焦点的 DockPanel,但只是有时会发生。
结论,我想在 DockPanel 可见时聚焦 TextBox,但我无法做到。
【问题讨论】: