0
質問を投稿してください:AutoCompleteBoxはEvilです
なぜオートコンプリートボックスは嫌ですか?私はACBにドロップダウンリストにデータを表示させるために少なくとも3日間は過ごしました。私が得るのは、ドロップダウンリストのクラス名だけです。リストボックスは完璧に動作します。
時間と労力ありがとう!
相続人はそのやっいただきました!の画像(プリ画像):
今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
は{TempateBinding COUNTRYNAME}に{=一緒パスバインディング}と{一緒TempateBinding} {バインディングパス= COUNTRYNAME}を変更しようと。これで問題が解決しない場合は、変更を元に戻して、xamlから設定ItemsSourceを削除し、atcTextBox.ItemsSource = aという行をatcTextBox.DataContext = aに置き換えてみてください。これが役に立ったら私に教えてください:)。 –
まあ、TemplateBinding CountryNameは "CountyNameがタイプ 'Control'に見つかりませんでした.XAMLのItemSourceを削除し、ItemSource = aをDataContect = aに置き換えると、ドロップダウンエフェクトが機能しなくなります(IE何も表示されません)別のノートでは、AutoCompleteBox.ItemTemplate内のテキストボックスの1つにコンバーターを追加し、コンバーターは決してヒットしません。(デバッグ) –
コメント#2:これを試してみました。 ://msdn.microsoft.com/en-us/library/Dd833083(v = vs95).aspx –