2011-04-06 104 views
0

我想綁定一個字段到我的轉換器...但它似乎是不可能的...Silverlight綁定轉換器

這就是我想要做的。

Source="{Binding LeaveApproved,Converter={StaticResource CommentTypeIconConverter},ConverterParameter={Binding TypeOfWorkId}}" 

我想要當TypeOfWorkId是5和LeaveApproved爲null不同的圖標。所有其他類型的工作應該有一個空的領域,所以沒有圖標。這就是爲什麼我需要在我的逆變器中使用typeOfWorkId。

有沒有人有任何想法如何做到這一點?

Grtz

+0

[看看這裏](http://stackoverflow.com/questions/4509342/silverlight-4-binding-to-converterparameter)可能的重複。 – 2011-04-06 07:14:16

回答

2

綁定不可能在ConvertParameter(雖然你可以使用靜態資源)的東西。 爲了解決你的情況,你將不得不創建另一個屬性說LeaveApprovedTypeOfWorkId這將考慮到你的邏輯。

public YourType LeaveApprovedTypeOfWorkId { 
    get{ 
    if(TypeOfWorkId==5 && LeaveApproved == null){ 
     return //something 
    } 
    else{ 
     return //something 
    } 
    } 
} 

改爲綁定到此屬性。 不要忘記NotifyPoppertyChange的情況下LeaveApprovedTypeOfWorkId設置

0
public class CommentTypeIconConverter:IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     int typeOfWorkId; 
     if (value == null && parameter != null && int.TryParse(parameter.ToString(), out typeOfWorkId) && typeOfWorkId == 5) 
      return new BitmapImage(...); 
     return null; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

這是否對你的工作?

這是更好的做法是使用multibinding雖然你想做的事..

http://www.scottlogic.co.uk/blog/colin/2009/06/silverlight-multibindings-how-to-attached-mutiple-bindings-to-a-single-property/

+0

我將不得不多次綁定,我猜...以前從未做過。我會給它一個! – Evert 2011-04-06 07:31:44

+0

如果你有devexpress,那麼你可以使用他們的多重綁定類,如果沒有,那麼你可以給這個另一個看看:http://www.scottlogic.co.uk/blog/colin/2010/05/silverlight-multibinding-solution -for-silverlight-4 /順便說一句,有可能做你想做什麼沒有多重綁定... – 2011-04-06 07:35:29

+0

我不希望使用多重綁定...有沒有辦法將我的對象發送到轉換器? – Evert 2011-04-06 07:53:36

1

不要設置對象的屬性,你將有你的對象在你的轉換。就像那樣:

Content="{Binding Converter={StaticResource xxxxxxConverterName }}"