2014-01-09 22 views
1

我有兩個組合框。以自己的風格在組合框中顯示字體樣式

  1. for FontFamily。
  2. 爲FontWeight。

的XAML 1組合框的樣子:

<ComboBox IsEditable="True" 
      ItemsSource="{x:Static Fonts.SystemFontFamilies}" > 
    <ComboBox.ItemTemplate> 
     <DataTemplate DataType="{x:Type FontFamily}"> 
      <TextBlock Text="{Binding}" FontFamily="{Binding}" /> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

在上面的XAML的輸出,我可以看到自己的風格所有的字體名稱。我也想爲第二個組合框做類似的事情。目前,我在第2組合框的一些項目如下:

<ComboBox IsEditable="True"> 
    <x:Static Member="FontStyles.Normal"/> 
    <x:Static Member="FontStyles.Italic"/> 
    <x:Static Member="FontStyles.Oblique"/> 
</ComboBox> 

我如何使用Combobox.ItemTemplate或無定型的每一項類似的東西表現出了自己的風格在上述組合框中每個項目。

例如,我的輸出應該是這個樣子:

普通

斜體

回答

3

充分利用類型轉換器:適用於大多數屬性有一個字符串轉換爲一個合適的值轉換器爲財產。需要能夠解析XAML(這是所有字符串)類型(考慮寫類似Width="Auto"的東西,同時記住Widthdouble的值)。

所以,你可以使用這樣的事情:

<ComboBox> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding }" 
         FontStyle="{Binding }" /> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
    <system:String>Normal</system:String> 
    <system:String>Italic</system:String> 
    <system:String>Oblique</system:String> 
</ComboBox> 

的爲FontStyle結合設置一個字符串,然後鍵入轉換器彈簧付諸行動,並串轉換成由物業使用的實際FontStyle值。

注意:這可能無法正常工作在.NET 3.0/3.5

編輯:只記得,在.NET 3.0/3.5,如果有對綁定,然後鍵入轉換器不工作定義的轉換器 - 綁定期望轉換器返回屬性的正確類型。不知道它是否在.NET 4.0/4.5中更改(可能不是,恕我直言,不應該 - 需要檢查它來驗證)。

哦,並添加此xmlns:xmlns:system="clr-namespace:System;assembly=mscorlib"

+0

謝謝XAMeLi我的朋友。它工作正常。 – Khushi

相關問題