0

TextBlockを含むDataTemplateを実装するwpfリストボックスがあります。

    <local:BooleanToFontColorConverter x:Key="boolToFontColor" />
    <DataTemplate x:Key="ListBox_DataTemplateSpeakStatus">
            <Label Width="Auto">
                    <TextBlock Foreground="{Binding Path=myProperty, Converter={StaticResource boolToFontColor}}" />
            </Label>
    </DataTemplate>

私の手元の仕事は「myProperty」の変更です。フォントの色を変えたいです。私のコンバーターは次のようになります。

public class BooleanToFontColorConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter,
                  CultureInfo culture)
    {
        if (value is Boolean)
        {
            return ((bool)value) ? new SolidColorBrush(Colors.Red) : new SolidColorBrush(Colors.Black);
        }

        return new SolidColorBrush(Colors.Black);
    }

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

これは機能します。バインドされたプロパティを変更すると、フォントの色(前景色)が赤に変わります。

私の質問はこれです:フォントを赤、太字、斜体に変更したいと思います。これはテキストブロックインラインを使用して可能であることを知っていますが、コンバーターを使用してこれら3つすべてを実行することは可能ですか?

応答する考えと洞察を持っているすべての人に感謝します。

4

1 に答える 1

3

このためにコンバーターを使用しないでください。aを使用し、プロパティにDataTriggerそれぞれ3つ追加してください。Setters

(複数のオブジェクトを返すこともできますが、これらのプロパティはすべて1つのオブジェクトしか受け取らないため、意味がありません。代替Binding.ConverterParameterとして、コンバーターを切り替えて、適切なプロパティの適切な値を返すことができます。それぞれ異なるパラメータを持つ3つのバインディングが必要ですが、非常に醜いです)

于 2012-06-29T14:16:16.057 に答える