J'ai créé une coutume ComboBox
comme suit: (note, le code est incorrect, mais vous devriez obtenir l'idée générale.) Le ComboBox
contient 2 propriétés de dépendance qui comptent: TitleText
et DescriptionText
.Reliure à l'élément sélectionné dans un ItemsControl
<Grid>
<TextBlock x:Name="Title"/>
<Grid x:Name="CBG">
<ToggleButton/>
<ContentPresenter/>
<Popup/>
</Grid>
</Grid>
Je veux utiliser ce ComboBox
pour afficher un large éventail d'options. J'ai créé une classe appelée réglage qui hérite de DependencyObject
pour créer des objets utilisables, j'ai créé un DataTemplate
pour lier le contenu de cet objet Settings
à mon ComboBox
et créé un UserControl
qui contient un ItemsControl
qui a comme modèle mon mentionné précédemment DataTemplate
. Je peux le remplir avec Setting
objets.
<DataTemplate x:Key="myDataTemplate">
<ComboBox TitleText="{Binding Title}" DescriptionText="{Binding DescriptionText}"/>
</DataTemplate>
<UserControl>
<Grid>
<StackPanel Grid.Column="0">
<ItemsControl Template="{StaticResource myDataTemplate}">
<Item>
<Setting Title="Foo" Description="Bar">
<Option>Yes</Option><Option>No</Option>
</Setting>
</Item>
</ItemsControl>
</StackPanel>
<StackPanel Grid.Column="1">
<TextBlock x:Name="Description"/>
</StackPanel>
</Grid>
</UserControl>
Je voudrais avoir le DescriptionText
du sélectionné ComboBox
(sélectionné soit par le IsFocus
du contrôle ComboBox
ou la propriété IsOpen
du pop-up) à placer dans le Description
TextBlock
dans mon UserControl
.
J'ai réussi à remplacer mon ItemsControl
par un ListBox
mais cela a causé plusieurs problèmes: il affichait toujours une barre de défilement même si je l'avais désactivé, il ne captait pas le focus lorsque mon popup était ouvert mais seulement quand je explicitement sélectionné l'élément dans mon ListBox
, quand j'ENABLED la propriété OverridesDefaultStyle
le contenu du ListBox
ne se présentent pas du tout, je devais re-thème le contrôle ListBox
pour correspondre à ma disposition UserControl
...
Quelle est la le meilleur et le plus facile moyen d'obtenir mon DescriptionText
se présenter sans utiliser un ListBox
ou en créant un Selector
personnalisé contrôle (car cela a eu le même effet qu'un ListBox
)?
Le but à la fin est de boucle à travers tous les éléments (les obtenir peut-être dans un ObservableCollection
ou une sorte et de les enregistrer dans mon fichier de paramètres.
Il n'est pas complètement clair à moi ce que vous essayez ici. Avez-vous un code-behind, ou utilisez-vous simplement Binding? – codekaizen
J'ai un code derrière le fichier, mais pour le moment il n'est pas vraiment utilisé. Chaque ComboBox contient une petite description sur l'option qu'il modifie, lorsque vous sélectionnez l'élément ComboBox (se concentre ou le popup est ouvert) l'idée est de mettre à jour le TextBlock Description sur la droite avec la description appropriée. – Jensen