|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
[WPF] Combobox and bind dinamico
Ciao,
nella mia applicazione WPF, sto usando delle combobox e come ItemsSource eseguo il bind di una collection letta dal database, vorrei: - eseguire un captalize dei vari item, qual è il modo migliore? - come impostare la larghezza della stessa lunghezza dell'item più lungo presente? Grazie. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
|
Il metodo più semplice che mi viene in mente è questo.
Codice:
<ComboBox ItemsSource="{Binding}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding NomeProprietà}" CharacterCasing="Upper"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Grazie Kendall,
ci siamo quasi, ma nel mio caso visualizzato anche DisplayMemberPath ottenendo così un'eccezione.... Codice:
<ComboBox Name="cmbTypeOfSchedule"
DataContext="{StaticResource DomainDataViewModel}"
ItemsSource="{Binding SchedTypes}"
DisplayMemberPath="Description"
IsEditable="True" IsReadOnly="True" Text="{StaticResource menuCmbAll}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Description}" CharacterCasing="Upper"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: May 2003
Città: Gioia Sannitica (CE)
Messaggi: 1436
|
Non puoi farlo nel codice invece che nello XAML?
Potresti applicare il metodo .ToUpper() alla proprietà o usare un converter?
__________________
• Lian-li PC-A10 • Hyper Type-R HPU-4S730 • ASUS P5B-E Plus • 2x2GB G.Skill F2-6400CL4D-4GBHK 4-4-3-5 • Intel Core 2 DUO E6600 • Asus EN8800 GTX (+ACCELERO) •
• DELL UltraSharp 2707WFP • Olidata17" • Microsoft Wireless Entertaiment Desktop 8000 • WRT610n(v2) - DD-WRT Synapse-0.1.6 (by paperboy) • DreamBox DM7025 • DreamBox DM8000 |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: Vicenza
Messaggi: 1570
|
Quote:
|
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Sto tentando la strada del Converter, così da lasciare lo xmal più leggibile.
Vediamo se riesco a risolvere.... |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1021
|
Ciao,
grazie della segnalazione. Per il primo punto ho usato la classse IValueConverter: Codice:
public class StringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
SchedType obj = value as SchedType;
string description = obj.Description;
if (description == null)
return null;
if (description.Length > 1)
return char.ToUpper(description[0]) + description.Substring(1);
return description.ToUpper();
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Nello XAML ho: - definito il namespace Codice:
xmlns:localConvert="clr-namespace:MyAPP.Converters" Codice:
<ComboBox Name="cmbTypeOfSchedule"
DataContext="{StaticResource DomainDataViewModel}"
ItemsSource="{Binding SchedTypes}"
IsEditable="True" IsReadOnly="True" Text="{StaticResource menuCmbAll}">
<ComboBox.Resources>
<localConvert:StringConverterCapitalize x:Key="toCapitalize"/>
</ComboBox.Resources>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Converter={StaticResource toCapitalize}}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Grazie. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:09.



















