0

画面にバインドしているオブジェクトのリストがあります。プロパティの1つはisPurchasedです。ブール型です。

私はコンバーターの経験があまりないので、これは少し難しいと感じています。2つの質問があります。

最初の質問は構文に関するものです。この例をここからコピーしました。

   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"

2番目の質問(最初の部分を実行できると仮定)は、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のプロパティは(Panel.Background msdnStackPanel )のタイプであるため、メソッドからタイプのオブジェクトを返すことができます。BrushSolidColorBrushConvert

コンバーターは次のようになります。

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 に答える