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 .

下面。如你所见,这个DockPanelVisibility=Hidden开头。然后,当触发器触发SelectedItem。hasInput值=1,它设置DockPanel的可见性可见,它应该集中我的TextBox txtBoxPopUp。问题是,当我点击节点,什么都没有发生(不显示DockPanel)。但是如果我删除第二个Setter(它给TextBox焦点),DockPanel正常出现。其他奇怪的行为,与2设置,如果我点击几次节点,需要用户输入它带来的DockPanel与文本框聚焦,但这只发生有时。

结论,我想聚焦文本框时,DockPanel它是可见的,但我不能这样做。

MVVM数据触发器不工作

<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)。