O controle ComboBox da WPF fornece opções flexíveis de ligação de dados, incluindo a capacidade de exibir e selecionar valores em uma lista de objetos personalizados. Este guia explora como vincular o ComboBox a uma lista personalizada no WPF e resolve problemas comuns.
Para vincular um ComboBox a uma lista personalizada, você precisa de uma classe que represente a estrutura de dados da lista. Por exemplo, se você tiver uma lista de entradas da agenda telefônica, poderá definir uma classe telefônica que contém propriedades como nome e número.
Em seguida, crie um ConnectionViewModel que expõe uma coleção de objetos telefônicos. Esse modelo de visualização atuará como uma fonte de dados para o ComboBox.
No seu XAML, vincule a propriedade Itens Source do ComboBox à propriedade PhoneFentries do modelo de exibição. Além disso, defina a propriedade DisplayMemberPath para especificar qual propriedade deve ser exibida na lista suspensa e a propriedade SelectedValuepath para indicar qual propriedade deve ser usada ao selecionar um item para definir a propriedade SelectedValue.
A ligação é bidirecional por padrão, permitindo que as alterações feitas na interface do usuário ou no modelo de visualização se propagem para os dois lados. No entanto, em alguns casos, você pode especificar uma ligação unidirecional, por exemplo, quando você deseja atualizar o modelo de exibição quando ocorrerem alterações na interface do usuário.
O DataContext da ComboBox deve ser uma instância do ConnectionViewModel que fornece uma lista personalizada. Se o datacontext não estiver definido explicitamente, o WPF tentará inferir com base nos elementos circundantes e na hierarquia de ligação.
Ao adicionar itens ao ComboBox através do itemScontrol ou ItemSpanel, eles herdam o DataContext do elemento pai por padrão. Isso significa que o datacontext de cada item no ComboBox dentro do itemsControl é o mesmo que o DataContext de seu próprio itemsControl.
Se a propriedade dos livros telefônicos no ConnectionViewModel for uma Coleção, você poderá encontrar problemas de ligação bidirecionais. Para resolver isso, considere alterar o tipo de propriedade para a ReadOnlyCollection ou a implementação de uma classe Derivada de IcollectionView personalizada.
Em alguns casos, você pode preferir usar o método ToString () de uma classe personalizada em vez de DisplayMemberPath. Isso permite um maior controle sobre o texto exibido na lista suspensa, enquanto ainda usa a propriedade SelectedValue para armazenar o valor selecionado.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3