Procedura: controllare il momento in cui il database di origine viene aggiornato dal testo di TextBox
In questo argomento viene descritto come utilizzare la proprietà UpdateSourceTrigger per controllare l'intervallo degli aggiornamenti dell'origine di associazione. Nell'argomento viene utilizzato il controllo TextBox come esempio.
Esempio
La proprietà TextBox.Text dispone di un valore predefinito UpdateSourceTrigger di LostFocus. In altri termini, se un'applicazione dispone di un oggetto TextBox con una proprietà con associazione a dati TextBox.Text, il testo digitato in TextBox non aggiorna l'origine finché l'oggetto TextBox perde lo stato attivo (ad esempio, quando si fa clic al di fuori di TextBox).
Se si desidera che il database di origine venga aggiornato durante la digitazione, impostare l'oggetto UpdateSourceTrigger dell'associazione su PropertyChanged. Nell'esempio seguente, le proprietà Text di entrambi gli oggetti TextBox e TextBlock vengono associate alla stessa proprietà di origine. La proprietà UpdateSourceTrigger dell'associazione TextBox viene impostata su PropertyChanged.
<Label>Enter a Name:</Label>
<TextBox>
<TextBox.Text>
<Binding Source="{StaticResource myDataSource}" Path="Name"
UpdateSourceTrigger="PropertyChanged"/>
</TextBox.Text>
</TextBox>
<Label>The name you entered:</Label>
<TextBlock Text="{Binding Source={StaticResource myDataSource}, Path=Name}"/>
Di conseguenza, poiché il database di origine cambia, l'oggetto TextBlock mostra lo stesso testo digitato dall'utente in TextBox, come illustrato nella schermata seguente dell'esempio:
Se si dispone di una finestra di dialogo o di un modulo modificabile dall'utente e si preferisce rimandare gli aggiornamenti del database di origine finché l'utente non abbia finito di modificare i campi e faccia clic su "OK", è possibile impostare il valore UpdateSourceTrigger delle associazioni su Explicit, come nell'esempio seguente:
<TextBox Name="itemNameTextBox"
Text="{Binding Path=ItemName, UpdateSourceTrigger=Explicit}" />
Quando il valore UpdateSourceTrigger viene impostato su Explicit, il valore di origine cambia solo quando l'applicazione chiama il metodo UpdateSource. Nell'esempio riportato di seguito viene illustrato come chiamare UpdateSource per itemNameTextBox:
Me.itemNameTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource()
Me.bidPriceTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource()
// itemNameTextBox is an instance of a TextBox
BindingExpression be = itemNameTextBox.GetBindingExpression(TextBox.TextProperty);
be.UpdateSource();
Nota |
---|
È possibile utilizzare la stessa tecnica per le proprietà di altri controlli, ma tenere presente che la maggior parte delle altre proprietà hanno un valore predefinito UpdateSourceTrigger di PropertyChanged.Per ulteriori informazioni, vedere la pagina delle proprietà UpdateSourceTrigger. |
Nota |
---|
La proprietà UpdateSourceTrigger è relativa agli aggiornamenti del database di origine e quindi si applica solo alle associazioni TwoWay o OneWayToSource.Affinché le associazioni TwoWay e OneWayToSource funzionino, è necessario che l'oggetto di origine fornisca le notifiche di modifica della proprietà.Per ulteriori informazioni, è possibile fare riferimento agli esempi citati in questo argomento.Inoltre, è possibile consultare Procedura: implementare notifiche di modifiche alle proprietà. |