Silverlight绑定转换器

时间:2011-04-06 07:03:27

标签: silverlight binding parameters converter

我正试图将一个字段绑定到我的转换器......但似乎不可能......

这就是我要做的事。

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

当TypeOfWorkId为5且LeaveApproved为null时,我想要一个不同的图标。所有其他类型的工作应该有一个空字段,所以没有图标。这就是我需要在我的变形器中使用typeOfWorkId的原因。

有人知道怎么做吗?

Grtz

3 个答案:

答案 0 :(得分:2)

在ConvertParameter中无法绑定(尽管您可以使用StaticResource)。 要解决您的情况,您必须创建另一个属性,例如LeaveApprovedTypeOfWorkId,它将考虑您的逻辑。

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

改为绑定此属性。 如果 LeaveApproved TypeOfWorkId 设置

,请不要忘记 NotifyPoppertyChange

答案 1 :(得分:1)

不要设置对象的属性,您将在转换中拥有对象。就像那样:

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

答案 2 :(得分: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();
    }
}

这对你有用吗?

最好使用多重绑定来做你想做的事情。

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