Mi sono guardato intorno, ho trovato alcune cose e ora sono bloccato su una casella combinata con due colonne visualizzate nell'area a discesa. Ho un tema xaml disponibile e la casella combinata "Stile" è definita e funziona bene come previsto, così che la parte è ok.WPF Style Combobox con due colonne nel menu a discesa
Ora ho una casella combinata di cui ho bisogno di visualizzare due valori, pensandoci come Abbreviazione Stato e Nome stato per il menu a discesa, proveniente da un'origine di associazione DataTable.DefaultView per gli articoli.
Se ho
<my:cboStates TextSearch.TextPath="StateAbbrev">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" TextSearch.Text="{Binding Path=StateAbbrev}">
<TextBlock Text="{Binding Path=StateAbbrev}"/>
<TextBlock Text="{Binding Path=FullStateName}" Margin="10 0"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</my:cboStates>
questo funziona. Ora, come/dove sono bloccato ... Ora, voglio questa stessa funzionalità diciamo 5 diverse forme e tutte per avere lo stesso contenuto visualizzato, e se mai cambiato (non questo, ma per le altre caselle combinate a più colonne), Non voglio dover continuare a inserirlo direttamente nel file XAML del modulo.
Speravo di inserire nel file del dizionario delle risorse del tema e continuare a riutilizzare sempre questo "stile". Ha senso. Tuttavia, quando faccio, ed il legame è alla tabella di dati, gli unici risultati che si ottengono quando si cerca di fare come stile è discesa mostra valori di
System.Data.DataRowView
System.Data.DataRowView
System.Data.DataRowView
System.Data.DataRowView
invece delle attuali 2 colonne. Ecco cosa ho nel dizionario delle risorse "tema".
<DataTemplate x:Key="myStateComboTemplate" >
<StackPanel Orientation="Horizontal" >
<TextBlock Text="{Binding Path=StateAbbrev}"/>
<TextBlock Text="{Binding Path=FullStateName}"/>
</StackPanel>
</DataTemplate>
<Style x:Key="StyleMyStatesCombobox" TargetType="{x:Type ComboBox}"
BasedOn="{StaticResource MyOtherWorkingComboBoxStyle}" >
<Setter Property="TextSearch.TextPath" Value="{Binding Path=StateAbbrev}" />
<Setter Property="ItemTemplate" Value="{StaticResource myStateComboTemplate}" />
</Style>
Quindi, se ho due casi la mia classe "cboStates" creato sul form e impostare uno a uno stile esplicito elencato per primo, e il secondo in base all'impostazione "Style", il secondo fallisce di mostra solo le voci System.Data.DataRowView ripetute, non il contenuto dei dati effettivi.
Cosa mi manca.
Quindi, per chiarire quello che sto cercando ... Uniti ... ex dati
AL Alabama
AK Alaska
AZ Arizona
AR Arkansas
CA California
CO Colorado
CT Connecticut
DE Delaware
voglio la casella combinata al esporrà l'abbreviato AL, AK, AZ, ecc e più stretto casella combinata. Questo sarà ANCHE il "SelectedValue" al ritorno.
L'effettivo menu a discesa presenta i dati sopra elencati, mostrando ENTRAMBI l'abbreviazione E la lunga descrizione dello stato.
Esempio di casella combinata desiderata
Qualsiasi motivo per cui non è possibile accoppiare i due insieme? Stavo pensando che potresti sempre provare a utilizzare una tupla, ma non sei sicuro di come funzionerebbe. –
@Bob, considerato Tuple, ma questo era solo un esempio semplificato di ciò che verrà popolato in una casella combinata che chiunque potrebbe capire. In realtà avrò una varietà di combobox simili che avranno dati provenienti da tabelle e potrebbero variare, quindi non valori fissi. Non volevo interrogare il database, quindi collegarlo e inserirmi in un'altra tupla di memoria solo per ri-analizzare chiave/valore/valore alt/chiave extra, ecc., Se necessario, dalla presentazione della combobox del risultato. – DRapp
Che dire di un 'Dictionary'? Collega la chiave 'a un' TextBlock' e 'Value' all'altro' TextBlock'? O ci sono più possibili più di due file? –