2010-12-03 26 views
3

Je souhaite utiliser la validation de champ intégrée à Silverlight 4.0 sur le code suivant et j'ai du mal à le faire fonctionner.Comment puis-je effectuer la validation de champ F #/Silverlight avec le code suivant?

MyForm.fs:

// imports, etc 
type MyForm() as this = 
    inherit UriCanvasControl("/Project;component/MyForm.xaml", "Enter Stuff") 

    [<DefaultValue>] 
    val mutable myTextBox: TextBox 

    do 
     Application.LoadComponent(this, base.uri) 
     this.myTextBox <- this?myTextBox 
// other stuff 

MyForm.xaml:

// ... 
<TextBox Name="myTextBox" Text="{Binding Path=myTextBox,Mode=TwoWay,ValidatesOnExceptions=True,NotifyOnValidationError=True}" TextChanged="Duration_Changed" Grid.Column="0" Margin="0,0,2,0"></TextBox> 
// ... 

J'ai essayé de mettre des annotations au-dessus du champ myTextBox dans le fichier .fs, mais le compilateur se plaint à ce sujet (annotations comme: [Required(ErrorMessage="enter something!")]).

Des idées? Merci.

Répondre

2

Je pense que vous aurez plus de chance avec une propriété, par ex.

type Yadda() = ... 
    let mutable backingField : TextBox = null 
    [<RequiredOrWhatever(blah)>] 
    member this.TheProperty with get() = backingField 
          and set(x) = backingField <- x 

mais je ne connais pas suffisamment les détails de Silverlight pour le vérifier dès maintenant.

+0

Je ne connais pas grand chose à propos de F # mais des annotations de validation de données à utiliser qui devraient être placées sur une propriété et non sur un champ. – AnthonyWJones