【问题标题】:Bind two Textboxes to one and the same Checkbox将两个文本框绑定到同一个复选框
【发布时间】:2019-08-16 09:13:58
【问题描述】:

我想使用一个复选框来控制 2 个文本框。 TextboxA 在应用程序启动时启用,textboxB 在应用程序启动时不可见。 如果复选框被选中,那么 textboxA 应该是 DISABLED 而 textboxB 应该是 VISIBLE。

这是我尝试过的:

<TextBox x:Name="txtHv" AcceptsReturn="False" PreviewTextInput="NurFuenfZahlenErlauben" MaxLength="5" Grid.Row="2" Grid.Column="2" Width="Auto" KeyUp="txtHv_KeyUp" Margin="0,0,99,0">
    <TextBox.Style>
        <Style TargetType="TextBox">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=cbKeineHv, Path=IsChecked}" Value="True">
                    <Setter Property="Text" Value=""></Setter>
                    <Setter Property="IsEnabled" Value="False"></Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

<CheckBox x:Name="cbKeineHv" Content="Keine HV" Grid.Column="2" HorizontalAlignment="Left" Margin="91,5,0,0" Grid.Row="2" VerticalAlignment="Top"/>

<TextBox x:Name="txtKeineHv" Visibility="Hidden" Grid.Column="3" HorizontalAlignment="Left" Height="23" Margin="39,0,0,0" Grid.Row="2" TextWrapping="Wrap" VerticalAlignment="Top" Width="120">
    <TextBox.Style>
        <Style TargetType="TextBox">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=cbKeineHv, Path=IsChecked}" Value="True">                           
                    <Setter Property="Visibility" Value="Visible"></Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

但是,如果我选中该复选框,则只有 textboxA "txtHv" 将被禁用,而 textboxB "txtKeineHv" 仍然不可见。我究竟做错了什么?为什么第二个数据触发器设置器没有触发?

【问题讨论】:

    标签: wpf xaml binding


    【解决方案1】:

    TextBox "txtKeineHv" 具有局部可见性值:Visibility="Hidden"

    样式触发器不能覆盖它。

    使用 Setter 实现可见性:

    <TextBox x:Name="txtKeineHv" Grid.Column="3" HorizontalAlignment="Left" Height="23" Margin="39,0,0,0" Grid.Row="2" TextWrapping="Wrap" VerticalAlignment="Top" Width="120">
        <TextBox.Style>
            <Style TargetType="TextBox">
                <Setter Property="Visibility" Value="Hidden"/>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding ElementName=cbKeineHv, Path=IsChecked}" Value="True">                           
                        <Setter Property="Visibility" Value="Visible"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </TextBox.Style>
    </TextBox>
    

    【讨论】:

      猜你喜欢
      • 2013-03-21
      • 2016-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-09
      相关资源
      最近更新 更多