【问题标题】:Datatrigger on textbox not working文本框上的数据触发器不起作用
【发布时间】:2010-03-10 14:35:28
【问题描述】:

您好,我正在尝试编写一个数据触发器,我必须在其中清除选中复选框上的文本框内容。我的代码如下所示

只要你不在文本框中输入任何内容,它就可以工作。只要我在文本框中输入数据触发器就无法工作。我该如何解决这个问题

<Window x:Class="CheckboxTextbox.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <Window.Resources>
        <Style x:Key="cbStyle" TargetType="{x:Type TextBox}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding ElementName=Chk,Path=IsChecked}" Value="True">
                    <Setter Property="Text" Value="{x:Null}"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>
    <StackPanel>
        <CheckBox Name="Chk" Content="test"/>
        <TextBox Style="{StaticResource cbStyle}">

        </TextBox>
    </StackPanel>
</Window>

【问题讨论】:

    标签: wpf textbox checkbox datatrigger


    【解决方案1】:

    与一旦动画结束就可以将依赖属性“保持”在指定值的动画不同,DataTrigger 设置目标属性,然后一直执行到源属性更改为止。

    换句话说,在您的示例中,如果您在文本框中放置一些文本,然后选中该框,则文本将被清除。但是,如果您再次开始在文本框中输入内容,DataTrigger 将不会执行任何操作,直到复选框再次更改。这就是为什么当您取消选中并重新选中该框时,文本再次被清除。

    因此,您可能想要在 DataTrigger 中将文本框的 IsReadOnly 属性设置为 true。这将阻止您在 DataTrigger 处于活动状态时在框中输入内容。

    <DataTrigger Binding="{Binding ElementName=Chk,Path=IsChecked}" Value="True">
        <Setter Property="Text" Value="{x:Null}"/>
        <Setter Property="IsReadOnly" Value="True"/>
    </DataTrigger>
    

    【讨论】:

      猜你喜欢
      • 2012-03-10
      • 2011-01-26
      • 2013-12-04
      • 2011-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      • 1970-01-01
      相关资源
      最近更新 更多