如何实现转换器

时间:2013-02-17 19:53:34

标签: wpf silverlight xaml winrt-xaml

我有一个我绑定到屏幕的对象列表。其中一个属性是isPurchased。它是一个布尔类型。

我对转换器没有太多经验,所以我发现这有点困难。我有两个问题。

第一个问题是关于语法。我从here复制了这个例子。

   public class purchasedConverter : IValueConverter
    {
       public object Convert(inAppPurchases value, Type targetType, object parameter, string language)
        {
            return;
        }
    }

如果isPurchased == true那么我想将背景颜色设置为我的堆叠面板到另一种颜色。

我在Convert方法上将object value更改为inAppPurchases value。但是,无论我尝试什么,我都无法获得对背景的引用。

我想我想return Background="somecolor"

我的第二个问题(假设我可以完成第一部分),我正在使用Microsoft WinRT项目附带的StandardStyles.xaml所以我的转换器将存在于那里。

 <StackPanel Grid.Column="1" VerticalAlignment="Top"
 Background="CornflowerBlue" Orientation="Vertical" Height="130"
 Margin="0,0,5,0"/>

但是,就像我说过我之前尝试过这个但是我无法弄清楚如何将转换添加到我的.xaml文件中。我在哪里可以参考转换器?是在我正在查看的StandardStyls.xaml还是主要的.xaml上?

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

Background的{​​{1}}属性属于StackPanelPanel.Background msdn),因此我们可以从Brush方法返回SolidColorBrush类型的对象

您的转换器应如下所示:

Convert

接下来,您必须在XAML中创建此转换器的实例:

class PurchasedConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        // isPurchased is bool so we can cast it to bool
        if ((bool)value == true)
            return new SolidColorBrush(Colors.Red);
        else
            return new SolidColorBrush(Colors.Orange);
    }

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

现在您可以使用此转换器绑定<Window.Resources> <con:PurchasedConverter x:Key="pCon" /> </Window.Resources> 中的Background属性:

StackPanel