У меня есть текстовое поле в форме, текстовое свойство которого не сбрасывается, несмотря на то, что строковое свойство, к которому оно привязано, имеет значение null. Доступ контролируется другим флажком, который называется 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}"/>
Вот ресурс stati c:
<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;
}
}
Свойство textbox.text не сбрасывается, несмотря на тот факт, что привязка является двусторонней, а для базового свойства NewSuspectLastName установлено значение null.