2011-01-17 5 views
2

Silverlight 프로젝트에 몇 가지 사용자 지정 글꼴을 추가했습니다. 그러나, 그들의 행동은 아주 산발적이다. 나는 그것을 custom control에서 사용하고있다. 컨트롤을 처음 추가하면 잘 표시됩니다. 다시 작성하면 글꼴이 기본값으로 다시 변경됩니다. 브라우저에서 앱을 볼 때 기본 글꼴도 사용됩니다. 글꼴은 자원으로 포함됩니다.Silverlight 임의의 글꼴 버그

Silverlight issue

상위 내가 디자이너에 컨트롤을 추가 한 직후 인은, 아래는 브라우저에서 응용 프로그램입니다. 나는 이것이 어떤 원인인지 전혀 모른다. 컨트롤에 대한 코드가 필요한 경우이를 제공 할 수 있습니다.

BorderedTextBlock.xaml

<UserControl x:Class="MindWorX.CustomPropertyReproduction.Controls.BorderedTextBlock" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" Height="100" Width="200"> 

    <Grid x:Name="LayoutRoot"> 
     <Border BorderThickness="1" BorderBrush="Lime"> 
      <TextBlock Name="MainTextBlock" Margin="4" TextWrapping="Wrap" /> 
     </Border> 
    </Grid> 
</UserControl> 

BorderedTextBlock.xaml.cs

using System; 
using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Media; 

namespace MindWorX.CustomPropertyReproduction.Controls 
{ 
    public partial class BorderedTextBlock : UserControl 
    { 
     public static readonly DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(String), typeof(BorderedTextBlock), new PropertyMetadata("TextBlock", new PropertyChangedCallback(OnTextChanged))); 

     private static void OnTextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
     { 
      BorderedTextBlock sender = (d as BorderedTextBlock); 
      sender.MainTextBlock.Text = (String)e.NewValue; 
     } 

     new public static readonly DependencyProperty FontFamilyProperty = DependencyProperty.Register("FontFamily", typeof(FontFamily), typeof(BorderedTextBlock), new PropertyMetadata(new FontFamily("Portable User Interface"), new PropertyChangedCallback(OnFontFamilyChanged))); 

     private static void OnFontFamilyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
     { 
      BorderedTextBlock sender = (d as BorderedTextBlock); 
      sender.MainTextBlock.FontFamily = (FontFamily)e.NewValue; 
     } 

     new public static readonly DependencyProperty FontSizeProperty = DependencyProperty.Register("FontSize", typeof(Double), typeof(BorderedTextBlock), new PropertyMetadata(11d, new PropertyChangedCallback(OnFontSizeChanged))); 

     private static void OnFontSizeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
     { 
      BorderedTextBlock sender = (d as BorderedTextBlock); 
      sender.MainTextBlock.FontSize = (Double)e.NewValue; 
     } 

     public BorderedTextBlock() 
     { 
      InitializeComponent(); 
     } 

     public String Text 
     { 
      get { return (String)GetValue(TextProperty); } 
      set { SetValue(TextProperty, value); } 
     } 

     new public FontFamily FontFamily 
     { 
      get { return (FontFamily)GetValue(FontFamilyProperty); } 
      set { SetValue(FontFamilyProperty, value); } 
     } 

     new public Double FontSize 
     { 
      get { return (Double)GetValue(FontSizeProperty); } 
      set { SetValue(FontSizeProperty, value); } 
     } 
    } 
} 
+0

1Yanone Kaffeesatz 얇은는 구글 글꼴 라이브러리입니다 너의 문제. –

+0

문제의 재현을 불러옵니다. 테스트를하면 기존 글꼴로 잘 작동하는 것을 확인할 수 있습니다. 하지만 사용자 정의 글꼴이 아닙니다. http://dl.dropbox.com/u/992656/MindWorX.CustomPropertyReproduction.7z –

+0

.7z 확장 프로그램이 dropbox에서 가져 와서 샘플을 보려면 무엇인지 알아낼 수 없습니다. 위 코드를 게시하여 문제의 원인을 파악하는 데 도움이 될 수 있습니까? –

답변

3

좋아, 나는 문제가 여기에 무엇을 볼 수 있지만, 나는이 문제를 해결하는 방법을 모른다 절차 적으로.

Fonts\mynewfont.ttf#My New Font과 같이 이름/경로와 일치하지 않으면 맞춤 글꼴의 FontFamily을 지정하는 것이 중요하지 않습니다 (즉, 작동하지 않음). 위의 코드가 수행하는 작업은 "My New Font을 불러 오십시오"라는 것입니다. 실행시에 찾을 수 없기 때문에 이해할 수 없습니다. 코드에서이 가족의 응용 프로그램을 호출 한 후 <FontFamily x:Key="YanoneKaffeesatzThin">Fonts\Yanone Kaffeesatz-47.ttf#Yanone Kaffeesatz Thin</FontFamily>1과 : myTxtBox.FontFamily = DirectCast(App.Current.Resources("YanoneKaffeesatzThin"), FontFamily)을이 문제를 해결 얻을

한 가지 방법은 App.xaml에 리소스로 당신이 필요로하는 글꼴을 만들어처럼, 그들에게 그 방법을 사용하는 것입니다. 당신이 구문과 프로젝트 구조를 추가 할 수 있습니다 당신이 알아 내려고 노력에 많은 도움이 될 사용자 정의 글꼴로 사용하고

+0

리소스 xaml 예제의 경우 +1입니다. 그러나 문제는 코드에서 할당 할 때가 아니라 디자이너가 글꼴을 할당 할 때입니다. 나는 사용자 정의 글꼴을 구현했을뿐만 아니라 다른 4 가지 글꼴 관련 필드도 구현 한 또 다른 사용자 정의 컨트롤을 만들었습니다. 이 작업을 마친 후에는 정상적으로 작동하는 것 같습니다. 이유는 모르겠지만 문제가 해결 된 것처럼 보입니다. –

관련 문제