MVVM数据触发器不工作
本文关键字:工作 触发器 数据 MVVM | 更新日期: 2023-09-27 18:04:45
我有以下代码
<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>
在我的问题之前,这个应用程序有一个带有一些节点的树视图。当我选择一个需要用户输入的节点时,它会显示之前的DockPanel。DockPanel还包含一个StackPanel在DockPanel. style .
下面。如你所见,这个DockPanel以Visibility=Hidden开头。然后,当触发器触发SelectedItem。hasInput有值=1,它设置DockPanel的可见性可见,它应该集中我的TextBox txtBoxPopUp。问题是,当我点击节点,什么都没有发生(不显示DockPanel)。但是如果我删除第二个Setter(它给TextBox焦点),DockPanel正常出现。其他奇怪的行为,与2设置,如果我点击几次节点,需要用户输入它带来的DockPanel与文本框聚焦,但这只发生有时。结论,我想聚焦文本框时,DockPanel它是可见的,但我不能这样做。
<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}"/>
</Style.Triggers>
</Style>
您不需要第二个数据触发器(设置为Hidden
)。