J'apprends actuellement à créer des contrôles personnalisés dans WPF. J'ai réussi à créer un contrôle personnalisé simple en utilisant une étiquette et une zone de texte. J'ai été en mesure d'autoriser la définition du texte Label par DependencyProperty.Ajout de ComboBoxItem à une zone de liste déroulante dans un contrôle utilisateur (XAML/WPF)
Maintenant, je crée un contrôle utilisateur qui a un ComboBox. Je dois autoriser l'ajout d'éléments à ce ComboBox depuis l'extérieur du contrôle. Pour ce faire, j'ai essayé d'exposer une DependencyProperty de type ItemsCollection et cela permettra d'accéder à la propriété Items de ComboBox (le DP dans mon exemple de contrôle est nommé 'CbItems'). Mais j'obtiens des erreurs parce que la propriété Items de Combobox est ReadOnly.
contrôle XAML
<UserControl x:Class="MyWpfApp.Controls.MyControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="Auto" Width="Auto">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Content="{Binding FieldLabel}"></Label>
<ComboBox Name="cmb" Grid.Column="1" Width="150"></ComboBox>
</Grid>
</UserControl>
MainWindow XAML
<Window x:Class="MyWpfApp.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ctl="clr-namespace:MyWpfApp.Controls"
Title="Window1" Height="300" Width="300">
<Grid>
<ctl:MyControl>
<ctl:MyControl.CbItems>
<ComboBoxItem>Hello</ComboBoxItem>
<ComboBoxItem>World</ComboBoxItem>
<ComboBoxItem>Hi</ComboBoxItem>
</ctl:LobCombox.CbItems>
</ctl:LobCombox>
</Grid>
</Window>
Je voudrais savoir quelle est la bonne façon est d'obtenir cette fonctionnalité. Je crois que la réponse à cette question pourrait aussi aider à d'autres contrôles tels que GridView etc
Merci beaucoup
Merci pour le lien. J'ai résolu le problème en utilisant CollectionViewSource. – byte