2011-04-06 86 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 }}"