2016-07-12 13 views
0

Ich muss Validierung für einige Standard-AutoSuggestBox-Steuerelement unterstützen. Meine Idee war also, das AutoSuggestBox-Steuerelement anzupassen, indem ich seine TextBox in ValidatingTextBox änderte (meine Implementierung von ValidatingTextBox von James Croft). Ist das überhaupt möglich? Wenn ja - wie und wenn nicht - was ist die Alternative?UWP - AutoSuggestBox-Anpassung

Antwort

0

So war meine Idee AutoSuggestBox Kontrolle, indem es TextBox ValidatingTextBox

Es wird nicht empfohlen, anstelle der TextBox von AutoSuggestBox anpassen. Einige Standardfunktionalitäten können deshalb fehlschlagen. Stattdessen können Sie eine Funktion hinzufügen. Und WinRTXamlToolkit bietet eine große Validierungserweiterung zu TextBox Kontrolle.

Sie können diese Erweiterung AutoSuggestBox durch folgende Schritte gelten:

  1. Referenz WinRTXamlToolkit in Ihrem Projekt. In Bezug von WinRTXamlToolkit.Controls.Extensions in XAML Seite wie unten:

    <Page 
    ... 
    xmlns:extensions="using:WinRTXamlToolkit.Controls.Extensions" 
    ...> 
    
  2. eine Kopie erstellen Ihre AutoSuggestBox Stilvorlage Kontrolle mit Visual Studio. Oder Sie können die Vorlage von here kopieren und sie auf Ihr AutoSuggestBox-Steuerelement anwenden.

  3. Suchen Sie das TextBox-Steuerelement in der Vorlage. In extensions:FieldValidationExtensions.Format="the format you need", um es wie folgt:

    <TextBox extensions:FieldValidationExtensions.Format="Numeric" 
         x:Name="TextBox" ScrollViewer.BringIntoViewOnFocusChange="False" DesiredCandidateWindowAlignment="BottomEdge" Header="{TemplateBinding Header}" Margin="0" PlaceholderText="{TemplateBinding PlaceholderText}" Style="{TemplateBinding TextBoxStyle}" Width="{TemplateBinding Width}" Canvas.ZIndex="0"/> 
    
  4. Wenn Sie Validierung Fehlermeldung angezeigt werden soll. Sie können die Platte dieses TextBoxGrid-StackPanel ändern und ein TextBlock wie unten hinzufügen:

    <StackPanel> 
         <VisualStateManager.VisualStateGroups> 
          <VisualStateGroup x:Name="Orientation"> 
           <VisualState x:Name="Landscape"/> 
           <VisualState x:Name="Portrait"/> 
           </VisualStateGroup> 
          </VisualStateManager.VisualStateGroups> 
          <TextBox extensions:FieldValidationExtensions.Format="Numeric" 
             x:Name="TextBox" ScrollViewer.BringIntoViewOnFocusChange="False" DesiredCandidateWindowAlignment="BottomEdge" Header="{TemplateBinding Header}" Margin="0" PlaceholderText="{TemplateBinding PlaceholderText}" Style="{TemplateBinding TextBoxStyle}" Width="{TemplateBinding Width}" Canvas.ZIndex="0"/> 
          <TextBlock Text="{Binding (extensions:FieldValidationExtensions.ValidationMessage), ElementName=TextBox}" 
             Visibility="{Binding (extensions:FieldValidationExtensions.ValidationMessageVisibility), ElementName=TextBox}" /> 
         ... 
    </StackPanel> 
    

Jetzt haben Sie eine grundlegende validatingAutoSuggestBox für den Einsatz bereit.

+0

@lijevosmetalo funktioniert es für Sie? Irgendwelche Updates? –

+0

Entschuldigung für die Antwort. Diese Methode funktionierte nicht für mich, also habe ich eine Kombination aus ASB und ValidatingTB verwendet und den Stil geändert. Sie sind an die gleiche Eigenschaft gebunden und alles funktioniert wie es sollte. – lijevosmetalo