Обновление WPF Combobox, но не Показывать показ при изменении ComboBox ItemsSource - PullRequest
1 голос
/ 22 апреля 2019

Я новичок в WPF, пытаюсь исправить самосовершенствующийся комбинированный список при событии keyup

Код Xaml: вот мой xaml для этого:

<ComboBox x:Name="party_list" Margin="10,15,0,6" Grid.Column="1" AllowDrop="True" IsTextSearchEnabled="False" IsEditable="True" KeyUp="party_list_KeyUp" >

Код C #: код позади


    public partial class page_addsale : Page
    {

        List<string> nameList { get; set; }
        DataTable data = new DataTable();
        List<string> autoList = new List<string>();

        public page_addsale()
        {
            InitializeComponent();

            nameList = new List<string>();

            con.Open();
            OleDbDataAdapter ad = new OleDbDataAdapter("select id, party_name from party_list", con);
            ad.Fill(data);
            con.Close();

            party_list.ItemsSource= data.DefaultView;
            party_list.DisplayMemberPath = "party_name";
            party_list.SelectedValuePath = "id";

            string[] arr = data.AsEnumerable().Select<System.Data.DataRow, String>(x => x.Field<String>("party_name")).ToArray();
            nameList.AddRange(arr);            

        }       

        private void party_list_KeyUp(object sender, KeyEventArgs e)
        {
            party_list.ItemsSource = null;
            var names = from n in nameList where (n.StartsWith(party_list.Text)) select n;

            foreach (string name in names)
            {
                autoList.Add(name.ToString());
            }
            try
            {
                if (party_list.Text.Length > 0)
                {
                   if (autoList.Count > 0)
                   {
                        party_list.ItemsSource = autoList;
                        party_list.IsDropDownOpen = true;

                   }                  
                }
            }
            catch (Exception ex)
            {

                MessageBox.Show(ex.Message);
            }
        }

, где элементы обновляются при изменении привязки источника элементов, но не отображаются в выпадающем списке

1 Ответ

1 голос
/ 22 апреля 2019

Вам необходимо очистить, прежде чем назначить новый party_list.ItemsSource = autoList;

party_list.DisplayMemberPath = "";
party_list.SelectedValuePath = "";

Но я не буду предлагать подобное создание класса.и преобразовать вашу таблицу данных в ее класс.так что у вас будет постоянство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...