2010-04-15 5 views

Antwort

3

Hier ist, wie ich es gemacht habe. Erstellen Sie eine abgeleitete Klasse, und überschreiben Sie OnPreviewTextInput. Legen Sie Ihre Auflistung auf die ItemsSource-Eigenschaft des Steuerelements fest und es sollte gut funktionieren.

public class CurrencySelectorTextBox : AutoCompleteBox 
{  
    protected override void OnPreviewTextInput(TextCompositionEventArgs e) 
    {    
     var currencies = this.ItemsSource as IEnumerable<string>; 
     if (currencies == null) 
     { 
      return; 
     } 

     if (!currencies.Any(x => x.StartsWith(this.Text + e.Text, true, CultureInfo.CurrentCulture)) 
     { 
      e.Handled = true; 
     } 
     else 
     { 
      base.OnPreviewTextInput(e); 
     }    
    } 
} 
1

Sie können Benutzer durch Priview Key Down-Ereignis einschränken. Ich hoffe, es wird funktionieren ...

1

Wenn Sie es auf eine Eigenschaft sind Datenbindung, wie dies für ein Beispiel

<sdk:AutoCompleteBox ItemsSource="{Binding Sites, Source={StaticResource VmSchedulel}}" ValueMemberPath="SiteName" 
              SelectedItem="{Binding Site, Mode=TwoWay}" FilterMode="ContainsOrdinal"> 
          <sdk:AutoCompleteBox.ItemTemplate> 
           <DataTemplate> 
            <TextBlock Text="{Binding SiteName}"/> 
           </DataTemplate> 
          </sdk:AutoCompleteBox.ItemTemplate> 
         </sdk:AutoCompleteBox> 

Wenn ein Text eingegeben wird, das nichts passt in der Itemssource wird die SelectedItem gleich null . In der set-Methode Ihrer Eigenschaft können Sie den Wert einfach nicht festlegen, da er null ist und die Eigenschaft ihren ursprünglichen Wert behält.

set 
     { 
      if (value != null) 
      { 
       BaseRecord.SiteID = value.ID; 
       PropChanged("Site"); 
      } 
     } 
Verwandte Themen