Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Topik ini menjelaskan cara menggunakan properti UpdateSourceTrigger untuk mengontrol waktu pembaruan sumber pengikatan. Topik ini menggunakan kontrol TextBox sebagai contoh.
Contoh
Properti TextBox.Text memiliki nilai default UpdateSourceTriggerdari LostFocus. Ini berarti jika aplikasi memiliki TextBox dengan properti TextBox.Text yang terikat data, teks yang Anda ketikkan ke TextBox tidak akan memperbarui sumber sampai TextBox kehilangan fokus (misalnya, ketika Anda mengklik menjauh dari TextBox).
Jika Anda ingin sumber diperbarui saat Anda mengetik, atur UpdateSourceTrigger dari pengikatan ke PropertyChanged. Dalam contoh berikut, baris kode yang disorot menunjukkan bahwa properti Text dari TextBox dan TextBlock terikat ke properti sumber yang sama. Properti UpdateSourceTrigger dari pengikatan TextBox diatur menjadi PropertyChanged.
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:src="clr-namespace:SDKSample"
xmlns:system="clr-namespace:System;assembly=mscorlib"
SizeToContent="WidthAndHeight"
Title="Simple Data Binding Sample">
<Window.Resources>
<ObjectDataProvider x:Key="myDataSource" ObjectType="{x:Type src:Person}">
<ObjectDataProvider.ConstructorParameters>
<system:String>Joe</system:String>
</ObjectDataProvider.ConstructorParameters>
</ObjectDataProvider>
<Style TargetType="{x:Type Label}">
<Setter Property="DockPanel.Dock" Value="Top"/>
<Setter Property="FontSize" Value="12"/>
</Style>
<Style TargetType="{x:Type TextBox}">
<Setter Property="Width" Value="100"/>
<Setter Property="Height" Value="25"/>
<Setter Property="DockPanel.Dock" Value="Top"/>
</Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Width" Value="100"/>
<Setter Property="Height" Value="25"/>
<Setter Property="DockPanel.Dock" Value="Top"/>
</Style>
</Window.Resources>
<Border Margin="25" BorderBrush="Aqua" BorderThickness="3" Padding="8">
<DockPanel Width="200" Height="100">
<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}"/>
</DockPanel>
</Border>
</Window>
Akibatnya, TextBlock memperlihatkan teks yang sama (karena sumber berubah) saat pengguna memasukkan teks ke dalam TextBox, seperti yang diilustrasikan oleh cuplikan layar sampel berikut:
Jika Anda memiliki dialog atau formulir yang dapat diedit oleh pengguna dan Anda ingin menunda pembaruan sumber sampai pengguna selesai mengedit bidang dan mengklik "OK", Anda dapat mengatur nilai UpdateSourceTrigger pada pengikatan Anda ke Explicit, seperti dalam contoh berikut:
<TextBox Name="itemNameTextBox"
Text="{Binding Path=ItemName, UpdateSourceTrigger=Explicit}" />
Saat Anda mengatur nilai UpdateSourceTrigger ke Explicit, nilai sumber hanya berubah saat aplikasi memanggil metode UpdateSource. Contoh berikut menunjukkan cara memanggil UpdateSource untuk itemNameTextBox:
// itemNameTextBox is an instance of a TextBox
BindingExpression be = itemNameTextBox.GetBindingExpression(TextBox.TextProperty);
be.UpdateSource();
Me.itemNameTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource()
Me.bidPriceTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource()
Nota
Anda dapat menggunakan teknik serupa untuk properti kontrol lainnya, tetapi perlu diingat bahwa sebagian besar properti lainnya memiliki nilai default UpdateSourceTrigger sebesar PropertyChanged. Untuk informasi selengkapnya, lihat halaman properti UpdateSourceTrigger.
Nota
Properti UpdateSourceTrigger berkaitan dengan pembaruan sumber dan oleh karena itu hanya relevan untuk pengikatan TwoWay atau OneWayToSource. Agar pengikatan TwoWay dan OneWayToSource berfungsi, objek sumber perlu memberikan pemberitahuan perubahan properti. Anda dapat merujuk ke sampel yang dikutip dalam topik ini untuk informasi selengkapnya. Selain itu, Anda dapat melihat Menerapkan Pemberitahuan Perubahan Properti.
Lihat juga
.NET Desktop feedback