TargetNullValue
soll die Bindung Target
aktualisieren, wenn die Bindung Source
ausgewertet null
:Warum TargetNullValue Update nullable Quelle
Ruft den Wert, der in dem Ziel verwendet wird, wenn der Wert der Quelle null ist .
Zusätzlich zu, dass es scheint auch die Source
zu null
(falls möglich) zu setzen, wenn der Wert von Target
ist gleich zu TargetNullValue
gegeben. Mit anderen Worten, es stellt effektiv eine Äquivalenz zwischen null
und der TargetNullValue
Wert der Eigenschaft. Dies wird jedoch in der Dokumentation überhaupt nicht erwähnt.
Sehen Sie folgendes Beispiel:
<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();
}
}
Hinweis: UpdateSourcetrigger
wird nur gesetzt Prüfung leichter zu machen und hat nichts mit der Wirkung in Frage zu tun.
Wenn Sie einen Haltepunkt in NullableInt
‚s Setter setzen, können Sie sehen, dass es ausgelöst wird (mit value == null
), wenn Sie den TextBox
Inhalt ''
ändern.
Ist dies ein undokumentiertes Verhalten von TargetNullValue
oder gibt es andere Nebenwirkung im Spiel?
Edit: ich auf dieses Thema gestoßen, weil ich auf diese Frage suchte:
Set value to null in WPF binding