Contrôle ComboBox de WPF fournit des options de liaison aux données flexibles, y compris la possibilité d'afficher et de sélectionner des valeurs dans une liste d'objets personnalisée. Ce guide explore comment lier ComboBox à une liste personnalisée dans WPF et résout des problèmes communs.
Pour lier un ComboBox à une liste personnalisée, vous avez besoin d'une classe qui représente la structure de données de liste. Par exemple, si vous disposez d'une liste des entrées de répertoire, vous pouvez définir une classe de répertoires téléphoniques qui contient des propriétés telles que le nom et le numéro.
Suivant, créez un ConnectionViewModel qui expose une collection d'objets de répertoire de téléphonierie. Ce modèle de vue agira comme une source de données pour ComboBox.
Dans votre XAML, liez la propriété ItemsSource de ComboBox à la propriété Péloque du modèle de vue. De plus, définissez la propriété DisplayMemberPath pour spécifier quelle propriété doit être affichée dans la liste déroulante et la propriété SelectedValuePath pour indiquer quelle propriété doit être utilisée lors de la sélection d'un élément pour définir la propriété SelectedValue.
La liaison est bidirectionnelle par défaut, permettant aux modifications apportées dans l'interface utilisateur ou le modèle de vue pour se propager des deux côtés. Cependant, dans certains cas, vous souhaiterez peut-être spécifier une liaison unidirectionnelle, par exemple, lorsque vous souhaitez simplement mettre à jour le modèle de vue lorsque des modifications se produisent dans l'interface utilisateur.
DataConText de ComboBox doit être une instance ConnectionViewModel qui fournit une liste personnalisée. Si le DataConText n'est pas explicitement défini, WPF essaiera de le déduire en fonction des éléments environnants et de la hiérarchie de liaison.
Lors de l'ajout d'éléments à comboBox via des élémentsControl ou des éléments, ils héritent du teneur en datacontext de l'élément parent par défaut. Cela signifie que le DataConText de chaque élément dans le ComboBox dans les éléments Control est le même que le DataConText de son itemsControl lui-même.
Si la propriété des répertoires téléphoniques sur le ConnectionViewModel est une collectionView, vous pouvez rencontrer des problèmes de liaison bidirectionnels. Pour résoudre ce problème, envisagez de modifier le type de propriété en ReadOnlyCollection ou implémentez une classe dérivée d'IcollectionView personnalisée.
Dans certains cas, vous préférez peut-être utiliser la méthode toString () d'une classe personnalisée au lieu de DisplayMemberPath. Cela permet un plus grand contrôle sur le texte affiché dans la liste déroulante, tout en utilisant la propriété SelectedValue pour stocker la valeur sélectionnée.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3