Почему TargetNullValue обновляет обнуляемый источник
TargetNullValue
должен обновить привязкуTarget
когда связываниеSource
оцениваетnull
:
Получает или задает значение, которое используется в цели, если значение источника равно нулю.
В дополнение к этому, кажется, установитьSource
вnull
(если возможно), когда значениеTarget
равно даноTargetNullValue
, Другими словами, он эффективно устанавливает эквивалентность междуnull
иTargetNullValue
стоимость имущества. Однако это не упоминается в документации вообще.
Смотрите этот пример:
<Window x:Class="WPF_Sandbox.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WPF_Sandbox"
Title="MainWindow"
x:Name="ThisControl">
<StackPanel x:Name="MainStackPanel">
<TextBox x:Name="MyTextBox" Text="{Binding NullableInt, ElementName=ThisControl, TargetNullValue='', UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
</Window>
public partial class MainWindow : Window
{
private int? nullableInt;
public int? NullableInt
{
get { return nullableInt; }
set { nullableInt = value; }
}
public MainWindow()
{
InitializeComponent();
}
}
Замечания:UpdateSourcetrigger
устанавливается только для облегчения тестирования и не имеет никакого отношения к рассматриваемому эффекту.
Если вы установите точку останова вNullableInt
сеттер, вы можете видеть, что он срабатывает (сvalue == null
) когда вы меняетеTextBox
содержание для''
.
Это недокументированное поведениеTargetNullValue
или здесь есть какой-то другой побочный эффект?
Изменить: я наткнулся на эту тему, потому что я смотрел на этот вопрос:
Установите значение null в привязке WPF