Compartilhar via


PropertyMap.Add(String, PropertyTranslator) Método

Definição

Adiciona um delegado PropertyTranslator para a propriedade especificada para o 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)

Parâmetros

propertyName
String

O nome da propriedade a ser mapeada.

translator
PropertyTranslator

O delegado PropertyTranslator que é chamado quando propertyName muda.

Exceções

O propertyName tem um mapeamento existente.

Exemplos

O exemplo de código a seguir mostra como adicionar um mapeamento para a Margin propriedade a um ElementHost controle.

// 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

O exemplo de código a seguir mostra como adicionar um mapeamento para a propriedade a Clip um WindowsFormsHost controle.

// 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

Comentários

Quando a configuração, se não PropertyTranslator existir, propertyNameo novo delegado será adicionado ao PropertyMap. Se já existir um PropertyTranslator para propertyName, um InvalidOperationException é gerado.

Aplica-se a

Confira também