2010-04-15 11 views

cevap

3

İşte ben böyle yaptım. Türetilmiş bir sınıf oluşturun ve OnPreviewTextInput'ı geçersiz kılın. Koleksiyonunuzu kontrolün ItemsSource özelliğine ayarlayın ve güzel çalışmalıdır. Bazı metin ItemsSource bir şey eşleşmiyor hangi girilirse

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

Kullanıcıyı, Priview kilitleme olayına göre kısıtlayabilirsiniz. Umarım çalışacaktır ...

1

Bir örnek

<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> 

için böyle bir özellik için veri bağlama varsa SelectedItem null eşit olacaktır . Mülkünüzün ayarlanmış yönteminde, değeri sıfır olarak belirleyemezsiniz ve özellik orijinal değerini koruyacaktır.

set 
     { 
      if (value != null) 
      { 
       BaseRecord.SiteID = value.ID; 
       PropChanged("Site"); 
      } 
     } 
İlgili konular