簡體   English   中英

MVVM DataTrigger不起作用

[英]MVVM DataTrigger don't work

我有以下代碼

<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.hasInput具有值= 1的位置處觸發時,它將DockPanel的Visibility設置為Visible ,並且應該將其聚焦在TextBox txtBoxPopUp上 問題是當我單擊該節點時,什么也沒發生(不顯示DockPanel)。 但是,如果我刪除第二個Setter(將焦點移到TextBox上),則DockPanel會正常顯示。 使用2個Setter的其他奇怪行為,如果我多次單擊需要用戶輸入的Node,則會使DockPanel集中在TextBox上,但這僅在某些時候發生。

結束語,當DockPanel可見時,我想將TextBox聚焦,但我無法做到這一點。

<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 )。 由於這已經是默認值,因此不需要它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM