DataTriggers:它是如何工作的

时间:2013-05-15 10:31:00

标签: wpf triggers

我想为textBox1实现一个DataTrigger。当textBox1中的Text为“ABC”时,我想显示“数据匹配!”另一个TextBox说,textBox2。我已经为此写了下面的xaml代码,但它没有用。我收到以下错误消息。

'Text' member is not valid because it does not have a qualifying type name

XAML代码是:

<Window x:Class="ControlTemplateDemo.Animation"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    Title="Animation" Height="300" Width="607">
<Grid>
    <Border Background="White">
        <StackPanel Margin="30" HorizontalAlignment="Left"  Width="500" Height="209">
            <TextBox Name="textBox1">                                        
                <TextBox.Triggers>
                    <DataTrigger Binding="{Binding Path=Text}">
                        <DataTrigger.Value>
                            <sys:String>ABC</sys:String>
                        </DataTrigger.Value>
                        <Setter TargetName="textBox2" Property="Text" Value="Data matched!"/>                            
                    </DataTrigger>
                </TextBox.Triggers>
            </TextBox>                
            <TextBox Name="textBox2">                    
            </TextBox>
        </StackPanel>
    </Border>
</Grid>

</Window>

绑定有问题吗?

谢谢, 与Hemant

1 个答案:

答案 0 :(得分:2)

您需要在DataTrigger中为Style提供TextBox

类似的东西:

<StackPanel>
  <TextBox x:Name="inputBox" />
  <TextBox Margin="0 25 0 0">
    <TextBox.Style>
      <Style TargetType="{x:Type TextBox}">
        <Setter Property="Text"
                Value="No Match Found" />
        <Style.Triggers>
          <DataTrigger Binding="{Binding ElementName=inputBox,
                                          Path=Text}"
                        Value="ABC">
            <Setter Property="Text"
                    Value="Match Found" />
          </DataTrigger>
        </Style.Triggers>
      </Style>
    </TextBox.Style>
  </TextBox>
</StackPanel>

TextBox.Triggers不支持DataTrigger。我猜它只适用于EventTriggers,因为文档说明了

在侧面注释中,我通常在元素中绑定最终作为目标(尽我所能)。这样我发现至少在个人调试方面更容易。如果TextBox有错误的信息,我会立即检查它的绑定情况,而不是我的xaml文件中的每个绑定,以查看哪个元素的绑定错误,最终更新了我的TextBox