AutoCompleteBox是邪恶的

时间:2012-02-22 18:25:22

标签: asp.net vb.net silverlight

见下这个问题:

为什么AutoCompleteBox讨厌我?我花了至少3天试图让ACB在下拉列表中显示数据。我得到的只是下拉列表中的类名。列表框工作完美。

感谢您的时间和精力!

下面是一张关于它做什么的图片: image

现在是继承人列表框的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的XAML

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

The Code Behide。

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

1 个答案:

答案 0 :(得分:1)

找到答案。

主题化导致AutocompleteBox出错。我删除了主题,自动填充框现在正在运行。

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

现在看看是否有修复...