Поделиться через


PropertyMap.Add(String, PropertyTranslator) Метод

Определение

Добавляет делегат PropertyTranslator для данного свойства в PropertyMap.

public:
 void Add(System::String ^ propertyName, System::Windows::Forms::Integration::PropertyTranslator ^ translator);
public void Add (string propertyName, System.Windows.Forms.Integration.PropertyTranslator translator);
member this.Add : string * System.Windows.Forms.Integration.PropertyTranslator -> unit
Public Sub Add (propertyName As String, translator As PropertyTranslator)

Параметры

propertyName
String

Имя сопоставляемого свойства.

translator
PropertyTranslator

Делегат PropertyTranslator, который вызывается при изменении propertyName.

Исключения

Для propertyName имеется существующее сопоставление.

Примеры

В следующем примере кода показано, как добавить сопоставление для Margin свойства с элементом ElementHost управления .

// The AddMarginMapping method adds a new property mapping
// for the Margin property.
private void AddMarginMapping()
{
    elemHost.PropertyMap.Add(
        "Margin",
        new PropertyTranslator(OnMarginChange));
}

// The OnMarginChange method implements the mapping 
// from the Windows Forms Margin property to the
// Windows Presentation Foundation Margin property.
//
// The provided Padding value is used to construct 
// a Thickness value for the hosted element's Margin
// property.
private void OnMarginChange(object h, String propertyName, object value)
{
    ElementHost host = h as ElementHost;
    Padding p = (Padding)value;
    System.Windows.Controls.Button wpfButton = 
        host.Child as System.Windows.Controls.Button;

    Thickness t = new Thickness(p.Left, p.Top, p.Right, p.Bottom );

    wpfButton.Margin = t;
}
' The AddMarginMapping method adds a new property mapping
' for the Margin property.
Private Sub AddMarginMapping()

    elemHost.PropertyMap.Add( _
        "Margin", _
        New PropertyTranslator(AddressOf OnMarginChange))

End Sub


' The OnMarginChange method implements the mapping 
' from the Windows Forms Margin property to the
' Windows Presentation Foundation Margin property.
'
' The provided Padding value is used to construct 
' a Thickness value for the hosted element's Margin
' property.
Private Sub OnMarginChange( _
ByVal h As Object, _
ByVal propertyName As String, _
ByVal value As Object)

    Dim host As ElementHost = h
    Dim p As Padding = CType(value, Padding)
    Dim wpfButton As System.Windows.Controls.Button = host.Child


    Dim t As New Thickness(p.Left, p.Top, p.Right, p.Bottom)

    wpfButton.Margin = t

End Sub

В следующем примере кода показано, как добавить сопоставление для Clip свойства с элементом WindowsFormsHost управления .

// The AddClipMapping method adds a custom 
// mapping for the Clip property.
private void AddClipMapping()
{
    wfHost.PropertyMap.Add(
        "Clip",
        new PropertyTranslator(OnClipChange));
}

// The OnClipChange method assigns an elliptical clipping 
// region to the hosted control's Region property.
private void OnClipChange(object h, String propertyName, object value)
{
    WindowsFormsHost host = h as WindowsFormsHost;
    System.Windows.Forms.CheckBox cb = host.Child as System.Windows.Forms.CheckBox;

    if (cb != null)
    {
        cb.Region = this.CreateClipRegion();
    }
}

// The Window1_SizeChanged method handles the window's 
// SizeChanged event. It calls the OnClipChange method explicitly 
// to assign a new clipping region to the hosted control.
private void Window1_SizeChanged(object sender, SizeChangedEventArgs e)
{
    this.OnClipChange(wfHost, "Clip", null);
}

// The CreateClipRegion method creates a Region from an
// elliptical GraphicsPath.
private Region CreateClipRegion()
{   
    GraphicsPath path = new GraphicsPath();

    path.StartFigure(); 

    path.AddEllipse(new System.Drawing.Rectangle( 
        0, 
        0, 
        (int)wfHost.ActualWidth, 
        (int)wfHost.ActualHeight ) );

    path.CloseFigure(); 

    return( new Region(path) );
}
' The AddClipMapping method adds a custom mapping 
' for the Clip property.
Private Sub AddClipMapping()

    wfHost.PropertyMap.Add( _
        "Clip", _
        New PropertyTranslator(AddressOf OnClipChange))

End Sub

' The OnClipChange method assigns an elliptical clipping 
' region to the hosted control's Region property.
Private Sub OnClipChange( _
ByVal h As Object, _
ByVal propertyName As String, _
ByVal value As Object)

    Dim host As WindowsFormsHost = h

    Dim cb As System.Windows.Forms.CheckBox = host.Child

    If cb IsNot Nothing Then
        cb.Region = Me.CreateClipRegion()
    End If

End Sub

' The Window1_SizeChanged method handles the window's 
' SizeChanged event. It calls the OnClipChange method explicitly 
' to assign a new clipping region to the hosted control.
Private Sub Window1_SizeChanged( _
ByVal sender As Object, _
ByVal e As SizeChangedEventArgs)

    Me.OnClipChange(wfHost, "Clip", Nothing)

End Sub

' The CreateClipRegion method creates a Region from an
' elliptical GraphicsPath.
Private Function CreateClipRegion() As [Region] 
    Dim path As New GraphicsPath()
    
    path.StartFigure()
    
    path.AddEllipse(New System.Drawing.Rectangle( _
        0, _
        0, _
        wfHost.ActualWidth, _
        wfHost.ActualHeight))
    
    path.CloseFigure()
    
    Return New [Region](path)

End Function

Комментарии

Если задано значение , если для PropertyTranslator не существует propertyName, новый делегат добавляется в PropertyMap. Если объект PropertyTranslator уже существует для propertyName, InvalidOperationException вызывается .

Применяется к

См. также раздел