Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu konuda, bağlama kaynak güncelleştirmelerinin UpdateSourceTrigger zamanlamasını denetlemek için özelliğinin nasıl kullanılacağı açıklanmaktadır. Konu, TextBox denetimini örnek olarak kullanır.
Örnek
özelliğinin TextBox.Text varsayılan UpdateSourceTrigger değeri vardır LostFocus. Bir uygulamada TextBox veriye bağlı bir TextBox.Text özelliği varsa, TextBox içine yazdığınız metin, TextBox odağını kaybedene kadar kaynağı güncelleştirmez (örneğin, TextBox dışına tıkladığınızda).
Yazarken kaynağın güncellenmesini istiyorsanız, bağlamanın değerini UpdateSourceTrigger olarak PropertyChanged ayarlayın. Aşağıdaki örnekte, vurgulanan kod satırları hem Text
hem de TextBoxTextBlock özelliklerinin aynı kaynak özelliğe bağlı olduğunu gösteriyor.
UpdateSourceTrigger bağlamanın TextBox özelliği PropertyChanged olarak ayarlanır.
<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, aşağıdaki örnek ekran görüntüsünde gösterildiği gibi, kullanıcı TextBlock içine metin girdikçe, TextBox aynı metni gösterir (kaynak değişiklik gösterse de).
İletişim kutunuz veya kullanıcı tarafından düzenlenebilir bir formunuz varsa ve kullanıcı alanları düzenlemeyi bitirip "Tamam" seçeneğine tıklayana kadar kaynak güncelleştirmelerini ertelemek istiyorsanız, aşağıdaki örnekte olduğu gibi bağlamalarınızın UpdateSourceTriggerdeğerini olarak ayarlayabilirsinizExplicit:
<TextBox Name="itemNameTextBox"
Text="{Binding Path=ItemName, UpdateSourceTrigger=Explicit}" />
Değeri UpdateSourceTrigger olarak Explicit ayarladığınızda, uygulama UpdateSource yöntemini çağırdığında kaynak değer yalnızca değişir. Aşağıdaki örnek, UpdateSource için itemNameTextBox
'i nasıl çağrılacağını göstermektedir:
// 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()
Uyarı
Diğer denetimlerin özellikleri için aynı tekniği kullanabilirsiniz, ancak diğer özelliklerin çoğunun varsayılan UpdateSourceTrigger değeri PropertyChangedolduğunu unutmayın. Daha fazla bilgi için özellik sayfasına bakın UpdateSourceTrigger .
Uyarı
UpdateSourceTrigger özelliği kaynak güncelleştirmeleri ile ilgilenir ve bu nedenle yalnızca TwoWay veya OneWayToSource bağlamaları için geçerlidir. ve TwoWayOneWayToSource bağlamalarının çalışması için kaynak nesnenin özellik değişikliği bildirimleri sağlaması gerekir. Daha fazla bilgi için bu konuda belirtilen örneklere başvurabilirsiniz. Buna ek olarak, Özellik Değişikliği Bildirimi'ni Uygulama bölümüne bakabilirsiniz.
Ayrıca bakınız
.NET Desktop feedback