2010-02-04 8 views
1

Silverlight 3을 사용하는 외부 라이브러리에서 병합 된 사전을 사용하고 리소스 파일 (styles.xaml)에 정의한 스타일이 내 단추 컨트롤에 올바르게 적용됩니다.병합 사전에서 글꼴을 찾을 수 없음

버튼에 글꼴을 적용하고 싶습니다. 내 styles.xaml과 동일한 디렉토리에 글꼴을 가지고 있습니다 (외부 dll에서 자원으로 빌드 작업을 수행함). styles.xaml에서 내가 가진 :

<Style x:Key="MyButtonStyle" 
     TargetType="Button"> 
    <Setter Property="Background" 
      Value="#FF1F3B53" /> 
    <Setter Property="Foreground" 
      Value="#FF000000" /> 
    <Setter Property="Padding" 
      Value="3" /> 
    <Setter Property="BorderThickness" 
      Value="1" /> 
    <Setter Property="FontFamily" 
      Value="VINERTIC.TTF#Viner Hand ITC" /> 

그러나, 글꼴

을 적용하지 않는 등. App.XAML 디렉토리에 글꼴 파일을 넣으려고 시도했지만 아직 적용되지 않았습니다. 스타일 외부에서 글꼴을 적용하면 올바르게 작동합니다.

답변

1

좋아, 이제 알았어. 글꼴 파일을 어셈블리의 경로로 참조해야한다는 것이 밝혀졌습니다. 리소스라는 폴더가있는 MyResourceAssembly라는 개별 어셈블리가 있다고 가정 해보십시오. 이 폴더에는 Assets1.xaml, Assets2.xaml 및 글꼴 파일이 있습니다. 빌드 작업은 세 가지 모두에 대해 "리소스"로 설정됩니다. 애플리케이션 (MyApp)에서 두 개의 리소스 파일을 병합하는 App.xaml을 사용할 수 있습니다. Assets2.xaml의

내용 :

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

    <Style x:Key="DeveloperStyle" 
      TargetType="TextBox"> 

     <Setter Property="FontFamily" 
       Value="/MyResourceAssembly;component/Resources/ProggyTiny.ttf#ProggyTinyTT"></Setter> 

     <Setter Property="FontSize" 
       Value="16"></Setter> 

    </Style> 

</ResourceDictionary> 

그리고 당신은 App.xaml에서 리소스 사전을 병합하는 방법이 있습니다 :

내 조기 회신에 대한
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
         x:Class="MyApp"> 
    <Application.Resources> 

     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
       <ResourceDictionary Source="/MyResourceAssembly;component/Resources/Assets1.xaml" /> 
       <ResourceDictionary Source="/MyResourceAssembly;component/Resources/Assets2.xaml" /> 
      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 

    </Application.Resources> 
</Application> 
+0

@Henrik. 자세한 답장을 보내 주셔서 감사합니다. 나는 나중에 그것을 나중에 줄 것이고, 그것이 모두 작동하는지 당신에게 알릴 것이다. –

+0

설명대로 고마워했습니다. –

0

편집

JD 모든 것이 동일한 어셈블리에있는 경우에만 작동이 응답을 무시합니다.


난 그냥이, ​​ 을 시도하고 나를 작동합니다. 이것은 내가 한 방식입니다 :

글꼴 파일 (ttf)은 응용 프로그램의 루트에 있습니다. 빌드 조치는 "자원"이고 "복사하지 마십시오"가 선택됩니다.

나는 앱의 루트에있는 "Resources"폴더도 가지고 있습니다. 여기에는 Assets1.xaml과 Assets2.xaml이 있습니다. 둘 다에 대한 빌드 조치는 "자원"이고 "복사하지 마십시오"가 선택됩니다. Assets1.xaml에는 중요하지 않은 것들이 있습니다. Assets2.xaml에서 나는 다음을 넣어 :

App.xaml에서
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 

    <Style x:Key="DeveloperStyle" 
      TargetType="TextBox"> 

     <Setter Property="FontFamily" 
       Value="ProggyTiny.ttf#ProggyTinyTT"></Setter> 

     <Setter Property="FontSize" 
       Value="16"></Setter> 

    </Style> 

</ResourceDictionary> 

I이 (내 앱의 기본 클래스를 사용할 수 있습니다,하지만 그 차이를해서는 안)을 수행

<base:BaseApplication xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
         xmlns:base="clr-namespace:GLS.Gui.Controls.Base;assembly=GLS.Gui.Controls" 
         x:Class="GLSTestApp02.App" 
         xmlns:sys="clr-namespace:System;assembly=mscorlib" 
         xmlns:h="clr-namespace:GLS.Gui.Helper;assembly=GLS.Gui.Helper"> 
    <base:BaseApplication.Resources> 

     <ResourceDictionary> 
      <ResourceDictionary.MergedDictionaries> 
       <ResourceDictionary Source="Resources/Assets1.xaml" /> 
       <ResourceDictionary Source="Resources/Assets2.xaml" /> 
      </ResourceDictionary.MergedDictionaries> 
     </ResourceDictionary> 

    </base:BaseApplication.Resources> 
</base:BaseApplication> 

같은 프로젝트의 TextBox에 스타일을 적용하면 사용자 정의 글꼴을 사용하여 스타일이 표시됩니다.

+0

죄송합니다. 그것은 분명히 당신이 별도의 어셈블리에 물건을 다루는 더 복잡합니다. 그러나 나는 그것이 해결했다고 생각한다, 나는 단지 그것에 조금 노력할 필요가있다. 나는 돌아올거야 ... –