2010-05-19 6 views
0

est-il possiable pour définir 2 champ de données pour un contrôle d'image whiling liantl'image de liaison avec 2 valeurs avec convertisseur

**<Image Source="{Binding ItemID, Converter={StaticResource IDToImageConverter}}" Height="50" />** 

maintenant ici, je dois ajouter une valeur Prix maintenant. besoin d'envoyer même prix comme un paramètre pour la fonction IDToImageConverter

comment puis-je le faire?

maintenant je dois vérifier d'abord la valeur des prix il y a 3 état i neeed vérifier

dans ma fonction IDToImageConverter

if(price> 5o) 
{ 
// then get the ItemID based on the value bind image here 
if(ItemID >20) 
{ 
// bind image1 
} 
if(ItemID >50) 
{ 
// bind image2 
} 

} 

if(price> 100) 
{ 
// as above codition we do here 
} 

maintenant comment puis-je ajouter ces fonctionnalités ci-dessus dans IDToImageConverter? une idée comment je peux résoudre






<Image Source="{Binding ItemID, Converter={StaticResource IDToImageConverter}}" Height="50" /> 
</DataTemplate> 
</data:DataGridTemplateColumn.CellTemplate> 
</data:DataGridTemplateColumn> 
</data:DataGrid.Columns> 
</data:DataGrid> 

public class IDToImageConverter : IValueConverter 
    { 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
    Uri uri = new Uri("~/Images/" + value.ToString()+ ".jpg", UriKind.Relative); 
    return new BitmapImage(uri); 
    } 

merci à l'avance. pour toute aide que vous fournissez prince

Répondre

0

sortie de la boîte, ce n'est pas possible. MultiBinding n'est pas supporté dans SL et l'option ConverterParameter n'est pas lisible (sinon, vous pourriez faire quelque chose comme Source = {Binding ItemID, Convertisseur = {...}, ConverterParameter = {Binding Price}} - mais comme je l'ai dit, ce n'est pas possible).

à mon humble avis, la meilleure solution serait de fournir une propriété ImageUrl dans votre objet ViewModel/de données que vous pouvez lier à:

public Uri ImageUrl 
{ 
    get 
    { 
    if (Price > 50) 
    { 
     if (ItemID > 20) 
     return new Uri("..."); 
     //... 
    } 
    //... 
    } 
} 

Si ce n'est pas une option, vous pouvez essayer la solution de contournement MultiBinding décrit ici: http://www.scottlogic.co.uk/blog/colin/2010/05/silverlight-multibinding-solution-for-silverlight-4/

Cheers, Alex

+0

ok merci pour Les Teh aide – happysmile

Questions connexes