2009-06-09 3 views
1

XAMLSilverlight 3 DataForm - Comment remplir DataFormComboBoxField de l'énumération

<df:DataForm x:Name="MobCrud" 
     AutoEdit="True" 
     AutoCommit="True" 
     AutoGenerateFields="False" 
     VerticalAlignment="Top"  
     CommandButtonsVisibility="All" 
     Header="Mob Details" 
     CanUserAddItems="True" 
     CanUserDeleteItems="True" 
     CurrentItem="{StaticResource newMob}" 
    > 
<df:DataForm.Fields> 
    <df:DataFormTextField Binding="{Binding Name}" FieldLabelContent="Name" /> 
    <df:DataFormTextField Binding="{Binding Title}" FieldLabelContent="Title"/> 
    <df:DataFormComboBoxField x:Name="AuraList" Binding="{Binding Aura}" FieldLabelContent="Aura"/> 
</df:DataForm.Fields> 

code:

public enum Auras 
{ 
    Holy, 
    Fire, 
    Frost, 
} 

public class MobDetail : IEditableObject 
{ 
    public string Name { get; set; } 
    public string Title { get; set; } 
    public Auras Aura { get; set; } 

    public override string ToString() { return Name; } 

    public void BeginEdit(){} 
    public void EndEdit(){} 
    public void CancelEdit(){} 
} 

Le DataForm ItemsSource est lié à un ObservableCollection()

Que dois-je faire pour remplir et initialiser la liste déroulante?

Répondre

1

réponse est d'utiliser un convertisseur:

<df:DataFormComboBoxField 
    x:Name="AuraList" 
    Binding="{Binding Aura, Mode=TwoWay, 
       Converter={StaticResource enumSelectedValueConverter}}" 
    FieldLabelContent="Aura"/> 

et régler la ItemsSource sur le formulaire événement chargé

(MobCrud.Fields[2] as DataFormComboBoxField).ItemsSource = 
       Enums.GetStringArray(typeof(Auras)); 

Voir ici pour l'histoire:

Creating-Rich-Data-Forms-in-Silverlight-3-Customization

Questions connexes