Pregunta

Estoy teniendo problemas para conseguir la caja de autocompletar en System.Windows.Controls.Input trabajo como deseo. Cuando comienzo a escribir la sección desplegable que muestra la lista filtrada no muestra la propiedad de que estoy unirse a, se muestra el nombre de la clase en su lugar.

Así en el ejemplo siguiente, cuando escribo en mi - en lugar de mostrar 'mi nombre' se muestra MyNamespace.Person. Sin embargo, al seleccionar el elemento de la lista de autocompletar, que muestra la propiedad FullName en el cuadro de texto. Estoy seguro de que estoy solo falta un simple autocompletar algún lugar propiedad de cuadro, pero no puedo verlo.

Ejemplo código:

public class Person
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string FullName
        {
            get { return string.Format("{0} {1}", FirstName, LastName); }
        }
    }

En mi código XAML detrás puedo crear objetos alguna persona y almacenarlos en una lista y se unen esa lista a una caja de autocompletar

List<Person> people = new List<Person>();
people.Add(new Person { FirstName = "My", LastName = "Name" });
people.Add(new Person { FirstName = "Fernando", LastName = "Torres" });
acbNames.ItemsSource = people;

Mi XAML:

<my:AutoCompleteBox Name="acbNames" ValueMemberPath="FullName" />

/ * después de entrar en 'mi', autocompletar muestra 'MyNamespace.Person' en lugar de 'mi nombre', pero muestra 'mi nombre' después de seleccionar el elemento de la lista * /

¿Fue útil?

Solución

Resulta que necesito utilizar un ItemTemplate para la parte desplegable de la AutoCompleteBox, por lo que el XAML para ahora sería como sigue:

<my:AutoCompleteBox Name="acbNames" ValueMemberBinding="{Binding FullName}">
            <my:AutoCompleteBox.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding FullName}"/>
                </DataTemplate>
            </my:AutoCompleteBox.ItemTemplate>
        </my:AutoCompleteBox>

Otros consejos

Sí, el problema se debía a que usted no puso plantilla de elementos. Pero si se pone plantilla de elementos y todavía tiene un problema leyó lo que Sandro ha wroted.

Yo tenía el mismo problema. Lo resuelto mediante un recurso estático para el Control del Estilo

Este es el estilo que utilicé:

<Style x:Key="autocomplete" TargetType="sdk1:AutoCompleteBox">
    <Setter Property="Margin" Value="5,0,5,0"/>
    <Setter Property="MinWidth" Value="100"/>
    <Setter Property="VerticalAlignment" Value="Center"/>
    <Setter Property ="HorizontalAlignment" Value="Right"/>
</Style>

Si no utilizo este estilo mi artículo de Aduanas no se muestran correctamente como puedo configurar en DataItem, en cambio, muestra el nombre de clase.

compartir | editar

Esto funciona para mí también, pero sólo cuando se aplica un poco de estilo de juego de herramientas tema personalizado. Hay algunas otras soluciones alternativas cuando no se utiliza el tema del juego de herramientas

Mejor,

debarisi

Yo tenía el mismo problema. Lo resuelto mediante un recurso estático para el Control del Estilo

Este es el estilo que utilicé:

    <Style x:Key="autocomplete" TargetType="sdk1:AutoCompleteBox">
        <Setter Property="Margin" Value="5,0,5,0"/>
        <Setter Property="MinWidth" Value="100"/>
        <Setter Property="VerticalAlignment" Value="Center"/>
        <Setter Property ="HorizontalAlignment" Value="Right"/>
    </Style>

Si no utilizo este estilo mi artículo de Aduanas no se muestran correctamente como puedo configurar en DataItem, en cambio, muestra el nombre de clase.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top