条件によってはブラシを赤またはオレンジに設定し、条件が満たされない場合はデフォルトのブラシにフォールバックする必要があります。
Windows Phone にスタイル トリガーがある場合、これは些細なことですが、そうではないため、次のようなシナリオごとに特別な目的のコンバーターを作成する必要があります。
public class StatusToColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var status = (Status)value;
if (status.IsCancelled)
{
return new SolidColorBrush(Colors.Red);
}
else if (status.IsDelayed)
{
return new SolidColorBrush(Colors.Orange);
}
else
{
return parameter;
}
}
}
次のように使用します。
<TextBlock Foreground="{Binding Status,
Converter={StaticResource statusToColorConverter},
ConverterParameter={StaticResource PhoneForegroundBrush}}" />
しかし今、条件に応じてPhoneForegroundBrush
orを返すコンバーターが必要です。PhoneDisabledBrush
2 つのパラメーターを渡すことはできません。また、Windows Phone では MultiBinding もサポートされていません。私はこれについて考えました:
<TextBlock Foreground="{Binding Status,
Converter={StaticResource statusToColorConverter},
ConverterParameter={Binding RelativeSource={RelativeSource Self}}
そのため、パラメーターでテキストブロックを取得し、それを使用してリソースを検索できますが、それも機能しません。
何か案は?