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.
Windows Presentation Foundation'da (WPF) PriorityBinding, bağlamaların listesini belirterek çalışır. Bağlama listesi en yüksek öncelikten en düşük önceliğe doğru sıralanmıştır. En yüksek öncelikli bağlama işlendiğinde bir değeri başarıyla döndürürse, listedeki diğer bağlamaları işlemeye gerek yoktur. En yüksek öncelikli bağlamanın değerlendirilmesinin uzun sürmesi durumunda, bir değeri başarılı bir şekilde döndüren sonraki en yüksek öncelik, daha yüksek öncelikli bir bağlama bir değeri başarıyla döndürene kadar kullanılır.
Örnek
PriorityBinding nasıl çalıştığını göstermek için, AsyncDataSource nesnesi şu üç özellikle oluşturulmuştur: FastDP, SlowerDPve SlowestDP.
FastDP get erişimcisi, _fastDP veri üyesinin değerini döndürür.
SlowerDP alma erişimcisi, _slowerDP veri üyesinin değerini döndürmeden önce 3 saniye bekler.
SlowestDP alma erişimcisi, _slowestDP veri üyesinin değerini döndürmeden önce 5 saniye bekler.
Uyarı
Bu örnek yalnızca tanıtım amaçlıdır. .NET yönergeleri, bir alan kümesine göre kat kat daha yavaş olan özelliklerin tanımlanmasını önermemektedir. Daha fazla bilgi için bkz.Özellikler ve Yöntemler Arasında Seçim Yapma
public class AsyncDataSource
{
private string _fastDP;
private string _slowerDP;
private string _slowestDP;
public AsyncDataSource()
{
}
public string FastDP
{
get { return _fastDP; }
set { _fastDP = value; }
}
public string SlowerDP
{
get
{
// This simulates a lengthy time before the
// data being bound to is actualy available.
Thread.Sleep(3000);
return _slowerDP;
}
set { _slowerDP = value; }
}
public string SlowestDP
{
get
{
// This simulates a lengthy time before the
// data being bound to is actualy available.
Thread.Sleep(5000);
return _slowestDP;
}
set { _slowestDP = value; }
}
}
Public Class AsyncDataSource
' Properties
Public Property FastDP As String
Get
Return Me._fastDP
End Get
Set(ByVal value As String)
Me._fastDP = value
End Set
End Property
Public Property SlowerDP As String
Get
Thread.Sleep(3000)
Return Me._slowerDP
End Get
Set(ByVal value As String)
Me._slowerDP = value
End Set
End Property
Public Property SlowestDP As String
Get
Thread.Sleep(5000)
Return Me._slowestDP
End Get
Set(ByVal value As String)
Me._slowestDP = value
End Set
End Property
' Fields
Private _fastDP As String
Private _slowerDP As String
Private _slowestDP As String
End Class
Text özelliği, AsyncDSkullanarak yukarıdaki PriorityBinding'e bağlanır.
<Window.Resources>
<c:AsyncDataSource SlowestDP="Slowest Value" SlowerDP="Slower Value"
FastDP="Fast Value" x:Key="AsyncDS" />
</Window.Resources>
<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"
DataContext="{Binding Source={StaticResource AsyncDS}}">
<TextBlock FontSize="18" FontWeight="Bold" Margin="10"
HorizontalAlignment="Center">Priority Binding</TextBlock>
<TextBlock Background="Honeydew" Width="100" HorizontalAlignment="Center">
<TextBlock.Text>
<PriorityBinding FallbackValue="defaultvalue">
<Binding Path="SlowestDP" IsAsync="True"/>
<Binding Path="SlowerDP" IsAsync="True"/>
<Binding Path="FastDP" />
</PriorityBinding>
</TextBlock.Text>
</TextBlock>
</StackPanel>
Bağlama altyapısı Binding nesnelerini işlediğinde, Binding özelliğine bağlı olan ilk SlowestDPile başlar. Bu Binding işlendiğinde, 5 saniye boyunca uykuda olduğundan bir değeri başarıyla döndürmez, bu nedenle sonraki Binding öğesi işlenir. Sonraki Binding, 3 saniye boyunca uyuduğu için bir değeri başarıyla döndürmez. Bağlama altyapısı daha sonra Binding özelliğine bağlı olan sonraki FastDP öğesine geçer. Bu Binding "Hızlı Değer" ifadesini döndürür.
TextBlock artık "Hızlı Değer" değerini görüntüler.
3 saniye geçtikten sonra, SlowerDP özelliği "Daha Yavaş Değer" değerini döndürür.
TextBlock daha sonra "Daha Yavaş Değer" değerini görüntüler.
5 saniye geçtikten sonra SlowestDP özelliği "En Yavaş Değer" değerini döndürür. İlk olarak listelendiğinden bu bağlama en yüksek önceliğe sahiptir.
TextBlock artık "En Yavaş Değer" değerini görüntüler.
Bağlamadan başarılı dönüş değeri olarak kabul edilenler hakkında bilgi için bkz. PriorityBinding.
Ayrıca bakınız
.NET Desktop feedback