2012-05-16 21 views
5

Po prostu szukałem go przez około 2 godziny i nic nie znalazłem.Windows 8 Metro: Implementacja sprawdzania poprawności

Biorąc pod uwagę następujący scenariusz:

public class Person 
{ 
    [Required] 
    public string Name { get; set; } 
} 

XAML:

<TextBox Text="{Binding Name, Mode=TwoWay}" /> 

Jak byś go o automatycznie uzyskać informacje zwrotne walidacji na interfejsie jak jest w MVC3?

(Oh, a ja naprawdę nie obchodzi mnie w tej chwili, czy byłbym w stanie wykorzystać zintegrowane DataAnnotations przypomina [Wymagane] lub nie)

Każda pomoc jest bardzo mile widziana!

Odpowiedz

13

Dodałem coś do WinRT XAML Toolkit. To się nazywa TextBoxValidationExtensions i pozwala na określenie poprawności tak:

<TextBox 
    Width="400" 
    HorizontalAlignment="Left" 
    xyzc:TextBoxValidationExtensions.Format="NonEmptyNumeric" 
    xyzc:TextBoxValidationExtensions.InvalidBrush="Red" 
    xyzc:TextBoxValidationExtensions.ValidBrush="Green" /> 

Formaty są aktualnie zdefiniowane jako:

[Flags] 
public enum ValidTextBoxFormats 
{ 
    Any = 0, 
    NonEmpty = 1, 
    Numeric = 2, 
    NonEmptyNumeric = 3 
} 

Cały kod jest nieco zbyt długo, aby podzielić się tutaj. Można wykupić kod CodePlex i modyfikować do własnych potrzeb - dodawać nowe zasady weryfikacji, modyfikacji domyślnych pędzli itp

+0

Wygląda na to, że to wystarczy! W każdym razie, czy możesz mi wytłumaczyć, jak mógłbym ustawić to w kodzie zamiast w XAML? – Shion

+0

Jeśli używasz MVVM wtedy masz jakąś widzenia modelu polu, z tekstem i format właściwości, więc wtedy można po prostu ustawić wiązania jak xyzc: TextBoxValidationExtensions.Format = „{Binding} Format”. Jeśli po prostu wykonasz kod, to nazwałbyś TextBoxValidationExtensions.SetFormat (myTextBox, ValidTextBoxFormats.Numeric). –

+0

Inne rozwiązanie zostało opisane przez Jerry'ego Nixona na jego blogu [tutaj - Let's Code! Obsługa sprawdzania poprawności w aplikacji Windows Store] (http://blog.jerrynixon.com/2014/07/lets-code-handling-validation-in-your.html). –

0

Wystarczy użyć zdarzenia w danym XAML kontroli, jak gdyby w textbox użytku pointerexited i napisać funkcję w kodzie z tyłu, aby wykonać wymaganą walidację.

+0

Chociaż na to pytanie już udzielono odpowiedzi: Twoja sugestia doprowadziłaby do bardzo powielonego i trudnego do utrzymania kodu. Filip Skakun (w zaakceptowanej odpowiedzi!) Odpowiedział już doskonale. :) – Shion

-1

Wydaje się, na podstawie udzielonego wsparcia w ramach, że niezwykły pomysł na „Zatwierdź” pole tekstowe jest tak rzadkie i niezbyt często, że nie musi być brane pod uwagę. Wszyscy wiemy, że gdyby to, co chcieliście zrobić, było w ogóle powszechne lub użyteczne, to byłoby takie rozważanie w tak dobrze zaprojektowanym i wszechstronnym środowisku.

+0

Dlaczego nie ma potrzeby sprawdzania poprawności pola tekstowego, na przykład adresu URL, numeru, podstawowego adresu e-mail lub czegokolwiek innego? Oczywiście można wykonać sprawdzanie poprawności jednym kliknięciem przycisku i dodać odpowiedni styl do pola tekstowego, ale czasami nie jest to potrzebne. A także: tylko dlatego, że nie jest w ramach, nie oznacza, że ​​nie jest pożądany/potrzebny. – Shion

+0

@Shion znaleźć słownika i wyszukać słowo „sarkazm” – HappyNomad

+0

Są ludzie, którzy znaczą rzeczy jak odpowiedź powyżej poważne ... – Shion

Powiązane problemy