【问题标题】:MVVM DataTrigger don't workMVVM 数据触发器不起作用
【发布时间】: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

如您所见,此 DockPanelVisibility=Hidden 开头。然后,当 SelectedItem.hasInputvalue=1 触发触发器时,它将 DockPanel 的 Visibility 设置为 Visible 并且应该聚焦我的文本框 txtBoxPopUp。问题是当我单击节点时,什么也没有发生(不显示 DockPanel)。但是,如果我删除第二个 Setter(将焦点放在 TextBox 上),则 DockPanel 会正常显示。其他奇怪的行为,使用 2 个设置器,如果我多次单击需要用户输入的节点,它会带来带有 TextBox 焦点的 DockPanel,但只是有时会发生。

结论,我想在 DockPanel 可见时聚焦 TextBox,但我无法做到。

【问题讨论】:

    标签: c# xaml mvvm


    【解决方案1】:
    <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)。由于这已经是默认值,因此不需要它。

    【讨论】:

    • 首先,感谢您的回答。你的意思是目标名称吗?如果是这样,则无法识别 TextBox 名称。
    • 其实你不需要。我更新了代码。立即尝试:D
    • 所以您刚刚删除了 DataTrigger 以将可见性设置为隐藏对吧?但它也不起作用:(
    猜你喜欢
    • 2011-01-26
    • 2013-12-04
    • 1970-01-01
    • 2012-03-10
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    • 2014-04-17
    相关资源
    最近更新 更多