2012-11-03 17 views
0

WPF 사용자 정의 컨트롤 어셈블리에서ResourceDictionary를 만들었습니다. 나는 이것을 UserControl에 걸쳐 사용하고이 분리 된 파일에 모든 스타일을 보유하고 싶습니다.WPF 사용자 정의 컨트롤 리소스

있는 ResourceDictionary :

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">  
    <Style x:Key="c1BtnX1"> 
     <Setter Property="Background" Value="Bisque"></Setter> 
    </Style>  
</ResourceDictionary> 

그것은 주소의 사용자 제어 총회 자료/mainResX.xaml 하고보기가 동일한 어셈블리에/조회/view.xaml

내가 할 수있는 생각 사용법 be :

<Border Style="{StaticResource ResourceKey=c1BtnX1}" 
     BorderBrush="Black" 
     Width="20" 
     Height="20"> 
       <TextBlock Text="X" /> 
</Border> 

또한 ControlControl 리소스를 정의하기 위해 UserControl 내부에서 아래의 코드를 시도했지만이 방법으로도 가능하지 않습니다. 자원을 찾으십시오.

<UserControl ... > 
    <UserControl.Resources> 
     <ResourceDictionary Source="../Resources/mainResX.xaml" />    
    </UserControl.Resources> 

어디서 어떻게 정의해야합니까?

+0

XAML 파일의 빌드 작업이 Resource로 설정되어 있습니까? (리소스가 있습니까? 내 주변에 코딩 컴퓨터가 없습니다 ...) – Joe

+0

빌드 동작이 없음, "포함 된 리소스"로 변경되었지만 크로스 컨텍스트에서 사용하려는 경우 좋을 것 같습니다. 어셈블리. 이 내용이 "내용"일 수 있는지 또는 ...?! – LastBye

+0

마법사 (리소스 사전)를 통해 만든 경우 해당 설정을 변경하지 말고 올바른 설정이어야합니다. – Joe

답변

3

제공되는 정보의 파일 구조가 무엇인지 알 수 없습니다.

resource.xaml과 control.xaml이 같은 어셈블리의 같은 폴더에 있으면 "/ Resources"없이 먼저 mainResX.xaml을 참조하면됩니다. 그렇지 않으면 어떻게 든 파일 구조를 설명해야합니다.

동일한 어셈블리에 있습니까? 필요에 따라 폴더 앞에 "../"문자열을 추가하고 폴더를 사용할 때 (예 : "../Resources/mainResX.xaml")

다른 어셈블리에 있으면 패키지 uri를 지정해야합니다. 필요하지 않을 때 조금 성가 시지만 실제로는 항상 이것을 할 수 있습니다. 여기

+0

동일한 어셈블리, View.Xaml은 뷰 폴더에 있습니다. 리소스는 리소스 폴더에 있습니다. – LastBye

+0

내 게시물 전에 친구도 "../Resources/mainResX.xaml"시도했지만 여전히 UserControl보기 찾을 수 없습니다. 또한 더 이상의 내적 문제에 대한 자세한 정보를 제공하기 위해 귀하가 제공 한 것을 시도해 보겠습니다. – LastBye

1

는 개인적으로 내가 내 응용 프로그램에서 전 세계적으로 사용할 스타일을 포함하는 XAML 파일의 "MergedDirectory"을 지정하는 내 App.xaml을 사용하려면 예를 들어

<ResourceDictionary Source="pack://application:,,,/MyAssembly.Wpf;component/Resources/mainResX.xaml" /> 

HTH,
Berryl에게 있습니다. 나는 보통 "DefaultStyles.xaml"을 가지고 모든 글로벌 스타일을 설정합니다 (스타일을 지정하지 않고도 앱의 모든 텍스트 상자를 동일하게 보이게 할 때처럼). 그런 다음 특정 스타일을 설정하는 데 "Styles.xaml"을 사용하거나 실제로 여러 컨트롤 유형이있는 경우 컨트롤 유형마다 하나의 XAML을 가질 수도 있습니다.

app.xaml 그것들은 당신의 앱에 대해 전역 적이며 경로와 사전을 끊임없이 다시 지정할 필요가 없습니다. 물론 이것은 모든 코딩 상황에 맞지 않을 수도 있지만 나에게는 시간 절약이다.

+0

정보를 제공해 주셔서 감사합니다.이 응용 프로그램은 귀하의 것과 약간 다를 수 있습니다.하지만 +1과 감사를 알면 좋습니다. – LastBye

+0

귀하의 방법에 따라 다른 어셈블리에있는 동안 리소스 중 일부를 어떻게 해결할 수 있는지 알고 싶으십니까? – LastBye

+0

그의 대답에 언급 된 Berryl과 같은 방법입니다. 왜 당신의 목적에 부합하는지 모르겠지만, 지금은 코딩 컴퓨터에 접속할 수 없습니다. – Joe