سؤال

أواجه مشكلة في الحصول على الإكمال التلقائي في system.windows.controls.input العمل كما أتمنى. عندما أبدأ في كتابة قسم القائمة المنسدلة الذي يعرض القائمة التي تمت تصفيتها ، لا يعرض الخاصية التي أربطها ، فإنها تعرض اسم الفصل بدلاً من ذلك.

لذلك في المثال أدناه ، عندما أكتب في بلدي - بدلاً من إظهار "اسمي" ، فإنه يعرض myNamesPace.person. ومع ذلك ، عندما أقوم بتحديد العنصر من القائمة الإكمال التلقائي ، فإنه يعرض خاصية FullName في مربع النص. أنا متأكد من أنني أفتقد خاصية صندوق الإكمال التلقائي البسيط في مكان ما ولكن لا يمكنني رؤيتها.

رمز المثال:

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

في رمز XAML الخاص بي ، أقوم بإنشاء بعض كائنات الشخص وتخزينها في قائمة وربط تلك القائمة بمربع الإكمال التلقائي

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;

xaml الخاص بي:

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

/ * بعد إدخال "My" ، يعرض تلقائي "myNamespace.person" بدلاً من "اسمي" ، ولكن يعرض "اسمي" بعد تحديد العنصر من القائمة */

هل كانت مفيدة؟

المحلول

اتضح أنني بحاجة إلى استخدام itemtemplate للجزء المنسدلة من completebox ، وبالتالي فإن XAML لأنها ستكون الآن كما يلي:

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

نصائح أخرى

نعم ، كانت مشكلتك لأنك لم تضع قالب العنصر. ولكن إذا وضعت قالب العنصر وما زلت مشكلة اقرأ ما قام به ساندرو.

كان لدي نفس المشكلة. لقد قمت بحلها باستخدام مورد ثابت لأسلوب التحكم

هذا هو النمط الذي استخدمته:

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

إذا لم أستخدم هذا النمط ، فلا يتم عرض عنصر الجمارك بشكل صحيح أثناء تكوينه في DataItem ، بدلاً من ذلك ، يُظهر اسم الفصل.

مشاركة | تحرير

هذا يعمل بالنسبة لي أيضًا ولكن فقط عندما قمت بتطبيق بعض النمط المخصص للموضوع من مجموعة الأدوات. هناك بعض الحلول الأخرى عند استخدام السمة من مجموعة الأدوات

الأفضل،

ديباريسي

كان لدي نفس المشكلة. لقد قمت بحلها باستخدام مورد ثابت لأسلوب التحكم

هذا هو النمط الذي استخدمته:

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

إذا لم أستخدم هذا النمط ، فلا يتم عرض عنصر الجمارك بشكل صحيح أثناء تكوينه في DataItem ، بدلاً من ذلك ، يُظهر اسم الفصل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top