2010-08-05 9 views
1

Je voudrais vous demander s'il est en quelque sorte possible de fournir dans la ListBoxItem la chaîne qui apparaîtra et la valeur à stocker dans DB. Ceci est en effet possible:ListBoxItem avec valeur?

ItemSource={Binding MyEnumColleciton} 

ou

ItemSource={DynamicResource MyCollection} 

etc ..

mais si vous l'image que j'ai environ 100 ListBoxes .. Je ne veux pas avoir tant de différents énumérations et d'autres collections ItemSource, je veux l'écrire directement dans le ListBoxItem.

C'est ce dont je parle:

<ListBox SelectedItem="{Binding Path=MyPath1}" Style="{StaticResource RadioButtonList}"> 
    <ListBoxItem Content="Text1" /> 
    <ListBoxItem Content="Text2" /> 
</ListBox> 

<ListBox SelectedItem="{Binding Path=MyPath2}" Style="{StaticResource RadioButtonList}"> 
    <ListBoxItem Content="Text3" /> 
    <ListBoxItem Content="Text4" /> 
</ListBox> 

<ListBox SelectedItem="{Binding Path=MyPath3}" Style="{StaticResource RadioButtonList}"> 
    <ListBoxItem Content="Text5" /> 
    <ListBoxItem Content="Text6" /> 
</ListBox> 

... 100x 

Répondre

0

Eh bien je suis venu avec ceci:

public class ItemSourceProvider 
    { 
     public IEnumerable<ValueText<int>> GetValues(object o) 
     { 
      if (o == null) return null; 

      switch (o.ToString().ToUpper()) 
      { 
       case "PARAM": 
       { 
        return new List<ValueText<int>>() 
        { 
         new ValueText<int>{Value = 1, Text = "YES"}, 
         new ValueText<int>{Value = 2, Text = "PARTIALLY"}, 
         new ValueText<int>{Value = 3, Text = "NO"} 
        }; 
       } 
       default: return null; 
      } 
     } 
    } 

    public class ValueText<T> 
    { 
     public string Text { get; set; } 
     public T Value { get; set; } 
    } 

Ajouter un DP dans les ressources du contrôle:

<ObjectDataProvider x:Key="testODP" MethodName="GetValues" ObjectType="{x:Type local:ItemSourceProvider}"> 
    <ObjectDataProvider.MethodParameters>PARAM</ObjectDataProvider.MethodParameters>        
</ObjectDataProvider> 

Et puis:

<ListBox SelectedValue="{Binding Path=A}" SelectedValuePath="Value" Style="{StaticResource RadioButtonList}" DisplayMemberPath="Text" ItemsSource="{Binding Source={StaticResource testODP}}" /> 
+0

Ce n'est pas directement ce que je voulais .. mais .. Vos avis? –

Questions connexes