C# Silverlight 5中的PresentationFramework

C# Silverlight 5中的PresentationFramework,c#,silverlight,xaml,C#,Silverlight,Xaml,我需要一些帮助来解决我在Silverlight 5中实现多布尔转换器时遇到的问题。我有实现,但是获得正确的引用给我带来了一些麻烦 以下是我的入门代码 XAML: 我遇到的问题是,接口位于命名空间System.Windows.Data,它位于PresentationFrameworkdll中,我无法将其添加为Silverlight项目中的引用,因为它不是针对Silverlight构建的 如果我完全错过了一些明显的东西,我道歉。如何在Silverlight中使用IMultiValueConverte

我需要一些帮助来解决我在Silverlight 5中实现多布尔转换器时遇到的问题。我有实现,但是获得正确的引用给我带来了一些麻烦

以下是我的入门代码

XAML:

我遇到的问题是,接口位于命名空间
System.Windows.Data
,它位于
PresentationFramework
dll中,我无法将其添加为Silverlight项目中的引用,因为它不是针对Silverlight构建的

如果我完全错过了一些明显的东西,我道歉。如何在Silverlight中使用IMultiValueConverter?我需要一个不同的DLL吗


另外,我的所有其他接口都实现了
IValueConverter
,它也存在于
System.Windows.Data
中,但它是从
c:\ProgramFiles(x86)\Microsoft SDK\Silverlight\v5.0\Libraries\Client\
中的
System.Windows.Data
dll中提取的,而不是
IMultiValueConverter
所需的程序集。但是,具有不明确的
System.Windows.Data
命名空间不应该是一个问题,因为我可以使用别名绑定来解决不明确的问题。我只需要弄清楚如何在Silverlight中获取
IMultiValueConverter

不幸的是,Silverlight没有多绑定场景的框架实现,因此您必须自己编写更多的代码

下面是一篇文章,其中包含了一些非常干净的代码来实现这一点-

它包括显式定义同一接口的代码,您可以在上面的代码中使用该接口:

  public interface IMultiValueConverter
  {   
      object Convert(object[] values, Type targetType, object parameter, 
                      CultureInfo culture);

      object[] ConvertBack(object value, Type[] targetTypes, object parameter,
                           CultureInfo culture);       
  }

哦,球。。。可以谢谢你的信息!
class MultiBooleanToVisibilityConverter : IMultiValueConverter
{
    public object Convert(object[] values,
                            Type targetType,
                            object parameter,
                            System.Globalization.CultureInfo culture)
    {
        bool visible = true;
        foreach (object value in values)
            if (value is bool)
                visible = visible && (bool)value;

        if (visible)
            return System.Windows.Visibility.Visible;
        else
            return System.Windows.Visibility.Collapsed;
    }

    public object[] ConvertBack(object value,
                                Type[] targetTypes,
                                object parameter,
                                System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
  public interface IMultiValueConverter
  {   
      object Convert(object[] values, Type targetType, object parameter, 
                      CultureInfo culture);

      object[] ConvertBack(object value, Type[] targetTypes, object parameter,
                           CultureInfo culture);       
  }