2013-04-22 5 views
1

내 문제는 간단 해 보였습니다 : 내 기본 페이지의보기 상자가 있고 선택한 테마 (theme1 또는 theme2)에 따라 적절한 이미지 (WhiteImage 또는 BlackImage 모두 정의 됨)를 표시하고 싶습니다. 리소스 아래에서 myImages.xaml의 SVG 캔버스로).WPF/XAML에서 서로 다른 이미지 표시 테마

<Viewbox x:Name="myCustomImage" 
VerticalAlignment="Top" 
Height="24" 
Margin="0,0,10,0" 
Child="{StaticResource myImage}" /> 

가 그럼 난 theme1.xaml의 캔버스 myimage을 정의하려고 (그리고 theme2.xaml 유사)은 다음과 같습니다 :

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:myApp"> 

    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="../Resources/myImages.xaml" /> 
    </ResourceDictionary.MergedDictionaries> 

    ... 
    <Color x:Key="myForegroundcolor">#FF63398F</Color> 
    ... 
    <Canvas x:Key="myImage">WhiteImage</Canvas> 

</ResourceDictionary> 

이 던졌습니다

내가 할 수 있다고 생각 것입니다 오류 메시지 - 'String'유형의 값을 'UI ElementCollection'유형의 콜렉션 또는 사전에 추가 할 수 없습니다.

처음부터 올바른 방법입니까? 그렇다면이 오류를 어떻게 수정합니까?

편집 : 아래의 딘의 조언 (감사)을 따랐습니다.

변경된 resourcetheme1.xaml을 다음과 같이 :

<Canvas x:Key="myImage" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     Width="200" 
     Height="100"> 
    <ContentControl Content="{StaticResource WhiteImage}" /> 

    <Canvas> 
     <Canvas> 
      <Path Fill="#FFFFFFFF" 
        Data=... />   
      <Path Fill="#FFFFFFFF" 
        Data=... /> 
     </Canvas> 
    </Canvas> 
</Canvas> 

변경된에서 MainPage.xaml을 다음과 같이

<Viewbox x:Name="myViewbox" 
... 
Height="32" 
Child="{StaticResource WhiteImage}" /> 

추가 .cs에 대한 종속성 속성 : 이것은 내가 무슨 짓을 ..

public Canvas myImage 
{ 
    get 
    { 
     return (Canvas)GetValue(myImageProperty); 
    } 
    set 
    { 
     SetValue(myImageProperty, value); 
    } 
} 

이제 mainpage.xaml에서이 줄에 다른 오류가 표시됩니다. Child = "{StaticResource WhiteImage}"/> - System.Windows.StaticResourceExtension에 값을 제공하면 예외가 발생했습니다. WhiteImage라는 리소스를 찾을 수 없습니다. xaml을 myImage btw로 변경하면 같은 오류가 발생합니다. 어떤 도움을 주셔서 감사합니다. 관련 메모에서, 나는 이것이 어렵다는 것을 알고 있습니다. 나는이 모든 것을하려고 노력하고 있습니다. : theme = black viewbox.child = whiteImage else viewbox.child = blackimage.

답변

1

문자열을 Canvas의 하위로 사용하고 있습니다. 아이와 같은 것을 선언해야합니다.

<Canvas x:Key="myImage"> 
    <ContentControl Content="{StaticResource WhiteImage}" /> 
</Canvas> 
관련 문제