2014-01-09 5 views
1

두 개의 콤보 박스가 있습니다.자체 스타일로 콤보 박스의 글꼴 스타일 표시

  1. for FontFamily.
  2. (FontWeight) 나는 그것의 자신 만의 스타일의 모든 글꼴 이름을 볼 수 있습니다 위의 XAML의 출력에서 ​​

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

    : 같은 1 콤보 상자에 대한

XAML 보인다. 제 2 콤보 박스와 비슷한 것을하고 싶습니다. 현재 내가 다음과 같이 2 콤보 상자에서 일부 항목이 : 나는 Combobox.ItemTemplate 각 항목을 스타일링없이 비슷한을 사용하여 자신 만의 스타일에 위의 콤보 상자의 각 항목을 표시 할 수 있습니다 방법

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

합니다.

예 : 내 출력과 같이 보일 것입니다 :

정상

기울임

사선을

답변

3

형 컨버터를 활용 : 대부분의 속성에 적합한 값으로 문자열을 변환하는 컨버터있다 재산. XAML (모든 문자열)을 형식으로 구문 분석 할 수 있어야합니다 (Widthdouble 값이라는 것을 기억하면서 Width="Auto"과 같은 것을 작성하는 것을 생각해보십시오).

그래서, 당신은 다음과 같이 사용할 수 있습니다

<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에서 변경된 것인지 확실하지 않습니다 (아마도 확인하지 않아야하며, IMHO가 필요하지 않습니다. 확인을 위해 확인할 필요가 있습니다).

아, 그리고 xmlns : xmlns:system="clr-namespace:System;assembly=mscorlib"

+0

감사합니다. XAMeLi 내 친구. 그것은 잘 작동합니다. – Khushi

관련 문제