Nasıl yapılır: TextBox Metni Kaynağı Güncelleştirdiğinde Denetleme
Bu konuda, UpdateSourceTrigger bağlama kaynak güncelleştirmelerinin zamanlamasını denetlemek için özelliğinin nasıl kullanılacağı açıklanmaktadır. Konuda TextBox bir örnek olarak denetim kullanılmaktadır.
Örnek
TextBox.TextÖzelliğin varsayılan UpdateSourceTrigger değeri vardır LostFocus . Bu, bir uygulamanın TextBox veri bağlantılı özelliği olan bir özelliğine sahip olması durumunda TextBox.Text , içine yazdığınız metin TextBox odağı kaybetene kadar kaynağı güncelleştirmez TextBox (örneğin, ' den uzağa tıkladığınızda TextBox ).
Kaynağı yazarken güncelleştirilmesini istiyorsanız, UpdateSourceTrigger bağlamasının öğesini olarak ayarlayın PropertyChanged . Aşağıdaki örnekte, vurgulanmış kod satırları Text , ve öğelerinin özelliklerinin TextBoxTextBlock aynı kaynak özelliğine bağlandığını gösterir. UpdateSourceTriggerTextBox Bağlamanın özelliği olarak ayarlanır 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>
Sonuç olarak, örneğin TextBlockTextBox aşağıdaki ekran görüntüsünde gösterildiği gibi, Kullanıcı içine metin girerken aynı metni (kaynak değiştiği için) gösterir:

Bir iletişim kutusu veya Kullanıcı tarafından düzenlenebilir bir formunuz varsa ve Kullanıcı alanları düzenleyip "Tamam" düğmesini tıklayana kadar kaynak güncelleştirmelerini erteleyebilirsiniz, UpdateSourceTriggerExplicit Aşağıdaki örnekte olduğu gibi Bağlamalarınızın değerini olarak ayarlayabilirsiniz:
<TextBox Name="itemNameTextBox"
Text="{Binding Path=ItemName, UpdateSourceTrigger=Explicit}" />
UpdateSourceTriggerDeğerini olarak ayarladığınızda Explicit kaynak değeri yalnızca uygulama yöntemi çağırdığında değişir UpdateSource . Aşağıdaki örnek, için nasıl çağrılacağını UpdateSource göstermektedir 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()
Not
Diğer denetimlerin özellikleri için aynı tekniği kullanabilirsiniz, ancak diğer özelliklerin çoğu için varsayılan bir değere sahip olduğunu aklınızda bulundurun UpdateSourceTriggerPropertyChanged . Daha fazla bilgi için, bkz UpdateSourceTrigger . Özellik sayfası.
Not
UpdateSourceTriggerÖzelliği, kaynak güncelleştirmeleriyle ilgilidir ve bu nedenle yalnızca TwoWay veya OneWayToSource bağlamalarla ilgilidir. TwoWayVe OneWayToSource bağlamaların çalışması için kaynak nesnenin özellik değişikliği bildirimleri sağlaması gerekir. Daha fazla bilgi için, bu konuda alıntı yapılan örneklere başvurabilirsiniz. Ayrıca, özellik değiştirme bildirimini Uygula' ya bakabilirsiniz.