我想为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
答案 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
。