2010-06-15 9 views
0

Comment désactiver un IValueConverter personnalisé lors de la conception? Fondamentalement, je veux écrire ceci:Comment désactiver un IValueConverter personnalisé au moment du design?

Public Class MethodBinder 
    Implements IValueConverter 

    Public Function Convert(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As CultureInfo) As Object Implements IValueConverter.Convert 
     If [DESIGN_TIME] Then Return Nothing 
     If value IsNot Nothing Then Return CallByName(value, CStr(parameter), CallType.Method) 
     Return Nothing 
    End Function 

    Public Function ConvertBack(ByVal value As Object, ByVal targetType As System.Type, ByVal parameter As Object, ByVal culture As CultureInfo) As Object Implements IValueConverter.ConvertBack 
     Throw New NotSupportedException 
    End Function 
End Class 

Répondre

0

La seule personne que je connais a besoin d'un UIElement:

DesignerProperties.GetIsInDesignMode(UIElement element); 
1

J'ai travaillé autour de ce à réagir spécifiquement à la valeur d'entrée (par défaut). Dans mon exemple, j'utilisais une bibliothèque chargée à l'exécution pour calculer le nombre de jours ouvrables en fonction du décalage entrant (en utilisant une méthode d'extension), cela échouait au moment du design car la bibliothèque n'était pas chargée.

Mais la valeur par défaut pour le contrôle était de 0, donc

public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
{ 
    int offset = 0; 
    if(value is double) 
     offset = (int)(double)value; 

    DateTime dt = offset == 0 
     ? DateTime.Today.Date.AddDays(-offset) 
     : DateTime.Today.Date.AddBusinessDays(-offset) ; 

    return string.Format("{0} ({1})", (offset), dt.ToString("ddd dd-MMM")); 
} 

Ce n'est pas assez, mais il était efficace.

Questions connexes