2012-06-29 43 views
0

我有一個wpf列表框,它實現了一個包含TextBlock的DataTemplate。是否有可能從wpf中的ivalueconverter返回多個值?

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

This works。字體顏色(前景)將在更改綁定屬性時變爲紅色。

我的問題是這樣的:我想我的字體改爲紅色,粗體和斜體。我知道這可以通過使用textblock內聯來實現,但是使用我的轉換器可以完成所有這三件事嗎?

謝謝大家有迴應的想法和見解。

回答

3

請勿爲此使用轉換器,請使用DataTrigger併爲屬性分別添加三個Setters

(您可以返回多個對象,但是它會毫無意義,因爲所有這些屬性都只有一個對象,一個變量將使用Binding.ConverterParameter,然後您可以在轉換器中切換以返回正確的值正確的屬性,你仍然需要三個綁定,每個不同的參數,它是非常難看)

+0

感謝您的快速評論。我將研究如何使用DataTrigger! –

+0

@mherr如果這個答案幫助你,你應該考慮接受它... –

+0

謝謝馬克,我知道這就是這個網站的工作原理。我花了一些時間調查DataTriggers,看看這是否確實能解決我的問題。我決定不打算使用DataTriggers,但如果我選擇了它們,它們就可以正常工作。 –

相關問題