RoutedPropertyChangedEventHandler<T> Delegasikan

Definisi

Mewakili metode yang akan menangani berbagai peristiwa rute yang melacak perubahan nilai properti.

generic <typename T>
public delegate void RoutedPropertyChangedEventHandler(System::Object ^ sender, RoutedPropertyChangedEventArgs<T> ^ e);
public delegate void RoutedPropertyChangedEventHandler<T>(object sender, RoutedPropertyChangedEventArgs<T> e);
type RoutedPropertyChangedEventHandler<'T> = delegate of obj * RoutedPropertyChangedEventArgs<'T> -> unit
Public Delegate Sub RoutedPropertyChangedEventHandler(Of T)(sender As Object, e As RoutedPropertyChangedEventArgs(Of T))

Jenis parameter

T

Jenis nilai properti tempat perubahan nilai dilaporkan.

Parameter

sender
Object

Objek tempat penanganan aktivitas dilampirkan.

e
RoutedPropertyChangedEventArgs<T>

Data peristiwa. Definisi peristiwa tertentu akan membatasi RoutedPropertyChangedEventArgs<T> jenis, dengan parameter jenis batasan yang cocok dengan batasan parameter jenis implementasi delegasi.

Contoh

Contoh berikut menentukan dan melampirkan metode handler untuk peristiwa tersebut ValueChanged .

Handler didasarkan pada RoutedPropertyChangedEventHandler<T>, dan didefinisikan dalam segmen kedua dari contoh kode, dengan parameter jenis generik dibatasi ke Double.

Slider childrenCountSlider = (Slider)LogicalTreeHelper.FindLogicalNode(myWindow, "ChildrenCountSlider");
childrenCountSlider.ValueChanged += new RoutedPropertyChangedEventHandler<double>(OnChildrenCountChanged);
Dim childrenCountSlider As Slider = CType(LogicalTreeHelper.FindLogicalNode(myWindow, "ChildrenCountSlider"), Slider)
AddHandler childrenCountSlider.ValueChanged, AddressOf OnChildrenCountChanged
private void OnChildrenCountChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
    int childrenCount = (int)Math.Floor(e.NewValue + 0.5);

    //  Update the children count...
    AutoIndexingGrid g = (AutoIndexingGrid)LogicalTreeHelper.FindLogicalNode(myWindow, "TargetGrid");
    while (g.Children.Count < childrenCount)
    {
        Control c = new Control();
        g.Children.Add(c);
        c.Style = (Style)c.FindResource("ImageWithBorder");
    }
    while (g.Children.Count > childrenCount)
    {
        g.Children.Remove(g.Children[g.Children.Count - 1]);
    }


    //  Update TextBlock element displaying the count...
    TextBlock t = (TextBlock)LogicalTreeHelper.FindLogicalNode(myWindow, "ChildrenCountDisplay");
    t.Text = childrenCount.ToString();
}
Private Sub OnChildrenCountChanged(ByVal sender As Object, ByVal e As RoutedPropertyChangedEventArgs(Of Double))
    Dim childrenCount As Integer = CInt(Fix(Math.Floor(e.NewValue + 0.5)))

    '  Update the children count...
    Dim g As AutoIndexingGrid = CType(LogicalTreeHelper.FindLogicalNode(myWindow, "TargetGrid"), AutoIndexingGrid)
    Do While g.Children.Count < childrenCount
        Dim c As New Control()
        g.Children.Add(c)
        c.Style = CType(c.FindResource("ImageWithBorder"), Style)
    Loop
    Do While g.Children.Count > childrenCount
        g.Children.Remove(g.Children(g.Children.Count - 1))
    Loop


    '  Update TextBlock element displaying the count...
    Dim t As TextBlock = CType(LogicalTreeHelper.FindLogicalNode(myWindow, "ChildrenCountDisplay"), TextBlock)
    t.Text = childrenCount.ToString()
End Sub

Contoh khusus ini tidak menggunakan karakteristik peristiwa yang dirutekan dari peristiwa; peristiwa ditangani pada elemen yang sama dengan yang dinaikkan. Ini tidak selalu terjadi. Untuk peristiwa yang dirutekan, ada kemungkinan bahwa sumber peristiwa adalah objek yang berbeda dari objek tempat handler dilampirkan.

Keterangan

Contoh peristiwa yang menggunakan delegasi yang dibatasi jenis berdasarkan RoutedPropertyChangedEventHandler<T> sertakan TreeView.SelectedItemChanged dan RangeBase.ValueChanged.

Metode Ekstensi

GetMethodInfo(Delegate)

Mendapatkan objek yang mewakili metode yang diwakili oleh delegasi yang ditentukan.

Berlaku untuk

Lihat juga