2012-02-22 4 views
0

質問を投稿してください:AutoCompleteBoxはEvilです

なぜオートコンプリートボックスは嫌ですか?私はACBにドロップダウンリストにデータを表示させるために少なくとも3日間は過ごしました。私が得るのは、ドロップダウンリストのクラス名だけです。リストボックスは完璧に動作します。

時間と労力ありがとう!

相続人はそのやっいただきました!の画像(プリ画像): image

今HERESにXAMLリストボックス

<ListBox Height="100" HorizontalAlignment="Left" Margin="367,81,0,0" Name="ListBox1" VerticalAlignment="Top" Width="184" ItemsSource="{Binding}" > 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <TextBlock Text="{Binding Together}" /> 
        <TextBlock Text=" sadssa" /> 
       </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

については、ここでAutoCompleteBox

<sdk:AutoCompleteBox x:Name="atcTextBox" ItemsSource="{Binding}" ValueMemberPath="CountryNumber" FilterMode="StartsWith" 
      IsTextCompletionEnabled="True" Height="30" MinimumPopulateDelay="0" MinimumPrefixLength="0" Margin="29,225,259,225"> 
      <sdk:AutoCompleteBox.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock Text="{Binding Path=CountryName}" /> 
         <TextBlock Text="{Binding Path=Together}" /> 
        </StackPanel> 
       </DataTemplate> 
      </sdk:AutoCompleteBox.ItemTemplate> 
     </sdk:AutoCompleteBox> 

とコードBehideためのXAMLです。

Partial Public Class pgMain 
    Inherits Page 

    Public Sub New() 
     InitializeComponent() 

     Dim a = GetCountry() 
     ListBox1.ItemsSource = a 
     atcTextBox.ItemsSource = a 
    End Sub 

    Private Function GetCountry() As List(Of Country) 
     Dim lstCountry As New List(Of Country)() 
     lstCountry.Add(New Country() With {.CountryName = "India"}) 
     lstCountry.Add(New Country() With {.CountryName = "USA"}) 
     lstCountry.Add(New Country() With {.CountryName = "Australia"}) 
     lstCountry.Add(New Country() With {.CountryName = "Germany"}) 
     lstCountry.Add(New Country() With {.CountryName = "England"}) 
     Return lstCountry 
    End Function 

End Class 

Public Class Country 
    Private m_CountryName As String 
    Public Property CountryName() As String 
     Get 
      Return m_CountryName 
     End Get 
     Set(ByVal value As String) 
      m_CountryName = value 
     End Set 
    End Property 

    Private m_CountryNumber As Integer 

    Public Property CountryNumber As Integer 
     Get 
      Return m_CountryNumber 
     End Get 
     Set(value As Integer) 
     End Set 
    End Property 

    Public ReadOnly Property Together 
     Get 
      Return m_CountryName & " " & m_CountryNumber.ToString 
     End Get 
    End Property 

    Public Sub New() 
     m_CountryNumber = Rnd(Timer) * 100 
    End Sub 
End Class 
+0

は{TempateBinding COUNTRYNAME}に{=一緒パスバインディング}と{一緒TempateBinding} {バインディングパス= COUNTRYNAME}を変更しようと。これで問題が解決しない場合は、変更を元に戻して、xamlから設定ItemsSourceを削除し、atcTextBox.ItemsSource = aという行をatcTextBox.DataContext = aに置き換えてみてください。これが役に立ったら私に教えてください:)。 –

+0

まあ、TemplateBinding CountryNameは "CountyNameがタイプ 'Control'に見つかりませんでした.XAMLのItemSourceを削除し、ItemSource = aをDataContect = aに置き換えると、ドロップダウンエフェクトが機能しなくなります(IE何も表示されません)別のノートでは、AutoCompleteBox.ItemTemplate内のテキストボックスの1つにコンバーターを追加し、コンバーターは決してヒットしません。(デバッグ) –

+0

コメント#2:これを試してみました。 ://msdn.microsoft.com/en-us/library/Dd833083(v = vs95).aspx –

答えて

1

回答が見つかりました。

テーマによってオートコンプリートボックスにエラーが発生していました。私はテーマを削除し、オートコンプリートボックスは現在動作しています。

<toolkit:Theme ThemeUri="/System.Windows.Controls.Theming.BureauBlue;component/Theme.xaml"> 
    </toolkit:Theme> 

それに対する修正があるかどうかを確認するために..

関連する問題