0

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

我对转换器没有太多经验,所以我觉得这有点困难。我有 2 个问题。

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

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

如果isPurchased == true那么我想将我的堆栈面板的背景颜色设置为不同的颜色。

我改为object value使用inAppPurchases valueConvert 方法。但是,无论我尝试什么,我都无法获得对背景的引用。

我想我想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 上?

任何帮助表示赞赏。

4

1 回答 1

2

Background的属性StackPanelBrushPanel.Background msdn)的类型,因此我们可以SolidColorBrushConvert方法返回类型的对象。

您的转换器应如下所示:

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();
    }
}

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

<Window.Resources>
    <con:PurchasedConverter x:Key="pCon" />
</Window.Resources>

现在你可以使用这个转换器来绑定Background属性StackPanel

<StackPanel VerticalAlignment="Top" Orientation="Vertical" Height="130"
         Background="{Binding isPurchased, Converter={StaticResource pCon}}" 
         Margin="0,0,5,0" >            
</StackPanel>
于 2013-02-17T20:08:37.803 回答