¿Por qué TargetNullValue actualiza Source anulable?
TargetNullValue
se supone que actualiza el enlaceTarget
cuando la uniónSource
evalúa anull
:
Obtiene o establece el valor que se usa en el destino cuando el valor de la fuente es nulo.
Además de eso, también parece establecer elSource
anull
(si es posible), cuando el valor deTarget
es igual a dadoTargetNullValue
. En otras palabras, establece efectivamente una equivalencia entrenull
y elTargetNullValue
valor de la propiedad Sin embargo, esto no se menciona en la documentación en absoluto.
Ver este ejemplo:
<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();
}
}
Nota:UpdateSourcetrigger
solo está configurado para facilitar las pruebas y no tiene nada que ver con el efecto en cuestión.
Si pones un punto de interrupción enNullableInt
'setter, puedes ver que se dispara (convalue == null
) cuando cambia elTextBox
contenido a''
.
¿Es este un comportamiento indocumentado porTargetNullValue
¿O hay algún otro efecto secundario en juego aquí?
Editar: me topé con este tema, porque estaba mirando esta pregunta:
Establecer el valor en nulo en el enlace WPF