XAML で複数の値コンバーターを連鎖させる方法はありますか? 質問する

XAML で複数の値コンバーターを連鎖させる方法はありますか? 質問する

2 つの別々の変換を行った後、データ コンテキストのプロパティにバインドされた整数値を表示する必要がある状況があります。

  1. 範囲内の値を反転します (例: 範囲は 1 ~ 100、データコンテキストの値は 90、ユーザーには 10 という値が表示されます)
  2. 数値を文字列に変換する

独自のコンバーター (IValueConverter を実装) を作成することで、両方の手順を実行できることはわかっています。ただし、最初の手順だけを実行する別の値コンバーターが既にあり、2 番目の手順は Int32Converter によってカバーされています。

これら2つの既存のクラスを連結する方法はありますか?XAMLでそれらを集約する追加のクラスを作成する必要はありませんか?

これについて何か明確にする必要がある場合は、お知らせください。 :)

ありがとう。

ベストアンサー1

私はこの方法私の Silverlight プロジェクトの Gareth Evans によるものです。

これが私の実装です:

public class ValueConverterGroup : List<IValueConverter>, IValueConverter
{
    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return this.Aggregate(value, (current, converter) => converter.Convert(current, targetType, parameter, culture));
    }

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

    #endregion
}

これは次のように XAML で使用できます。

<c:ValueConverterGroup x:Key="InvertAndVisibilitate">
   <c:BooleanInverterConverter/>
   <c:BooleanToVisibilityConverter/>
</c:ValueConverterGroup>

おすすめ記事