【发布时间】:2020-03-19 19:22:59
【问题描述】:
我在一个表单上有一个文本框,它的文本属性没有被重置,尽管它绑定的字符串属性被设置为空。访问由表单上另一个名为 cbxPartIINA 的复选框控制。当检查CBXPartiina时,应该禁用文本框并将其清空。当我检查 cbxPartIINA 时,文本框被禁用,但没有空白。
这是文本框的 XAML:
<TextBox Grid.Row="1" Grid.Column="0" HorizontalAlignment="Left" MaxLength="25"
MinWidth="200" CharacterCasing="Upper" BorderThickness="0" Style="{StaticResource PartIIGridIsEnabledTextBox}"
Margin="5,2,0,3" FontWeight="Bold" Name="tbxNewSuspectLastName"
Text="{Binding Form104CModel.NewSuspectLastName, Mode=TwoWay}"/>
这里是静态资源:
<Style TargetType="TextBox" x:Key="PartIIGridIsEnabledTextBox">
<!-- This style is used to turn off TextBoxes in Part II-->
<Style.Triggers>
<DataTrigger Binding="{Binding IsChecked, ElementName=cbxPartIINA}" Value="False">
<Setter Property="IsEnabled" Value="True"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsChecked, ElementName=cbxPartIINA}" Value="True">
<Setter Property="IsEnabled" Value="False"/>
<Setter Property="Text" Value=""/>
</DataTrigger>
</Style.Triggers>
<Setter Property="FontWeight" Value="Bold"></Setter>
</Style>
这是复选框的 XAML,选中后会关闭文本框:
<CheckBox Grid.Column="1" Content="NA" Background="White" Height="20" Width="auto" BorderBrush="Black" Name="cbxPartIINA"
IsChecked="{Binding Path=Form104CModel.IsPartIINA, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
这是 textbox.text 绑定到的属性:
private String newsuspectlastname;
public String NewSuspectLastName
{
get
{
return this.newsuspectlastname;
}
set
{
this.newsuspectlastname = value;
this.NewSuspect.LastName = value;
}
}
尽管绑定是双向的并且基础属性 NewSuspectLastName 被设置为 null,但 textbox.text 属性并未被重置。
【问题讨论】: