2017-03-14 2 views
0

각 그림이 나타내는 RadioButton의 배열로 구현 된 컨트롤로 WPF 창을 만들려고합니다. 나는 this example에서 제공하는 템플릿을 사용했습니다, 그래서 템플릿은 다음과 같습니다WPF의 사용자 지정 컨트롤에 대한 Resources 폴더의 이미지

<Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="RadioButton"> 
      <Border BorderThickness="{TemplateBinding BorderThickness}" 
          BorderBrush="{TemplateBinding BorderBrush}" 
          Background="Transparent" 
          CornerRadius="20">          
       <Image Source="{Binding Path=Content, 
           RelativeSource={RelativeSource TemplatedParent}}"/> 
      </Border> 
     </ControlTemplate> 
    </Setter.Value> 
</Setter> 

이제 문제는 컨트롤에 그림을 설정하기 위해, 나는 그림에 대한 전체 경로를 작성해야한다는 것입니다 , 당연히 그

<RadioButton Name="radioButtonNo" Checked="radioButton_Checked" 
     Content="C:\Myfolder\MyProject\Resources\MyPic0.png" 
     Style="{StaticResource Flag}" Width="75"/> 

처럼, 나는

<RadioButton Name="radioButtonNo" Checked="radioButton_Checked" 
     Content="MyPic0.png" 
     Style="{StaticResource Flag}" Width="75"/> 

같은 것을 쓸 수 있어야 할 것입니다하지만이 작업을 수행 할 때 내가 얻을 모두가 같은 파일 이름을 가진 표준의 RadioButton입니다 자막. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

답변

1

WPF에 그 이미지 리소스 일반적 어셈블리 리소스 파일로서 관리된다

<RadioButton Content="Resources/MyPic0.png" .../> 

주 같은 정확한 상대 경로를 제공하기에 충분해야한다. 빌드 동작은 Resource으로 설정되고 Resource File Pack URIs으로 참조됩니다. XAML 파서는 누락 된 pack://application:,,,/ 접두사를 자동으로 추가합니다. 명시 적으로 작성 팩 URI와

<RadioButton ...> 
    <RadioButton.Content> 
     <BitmapImage UriSource="Resources/MyPic0.png"/> 
    </RadioButton.Content> 
</RadioButton> 

또는 :

<RadioButton ...> 
    <RadioButton.Content> 
     <BitmapImage UriSource="pack://application:,,,/Resources/MyPic0.png"/> 
    </RadioButton.Content> 
</RadioButton> 


당신은뿐만 아니라 명시 적으로 된 ControlTemplate의 이미지 컨트롤의 Source 속성에 할당 된 ImageSource의 인스턴스를 만들 수 있습니다

+0

글쎄, 나는 다른 길이의 경로뿐만 아니라 'Content = "Resources/MyPic0.png"'시도하고 접두사를 수동으로 추가했습니다. 제 경우에는 효과가 없었습니다. UriSource를 지정하려고 시도하면 (제안 된 두 가지 방법 모두) 전체 경로가 캡션으로 사용되는 표준 RadioButton이 만들어졌습니다. –

+0

이미지 파일은 Visual Studio 프로젝트의 "Resources"폴더에 있어야합니다. Build Action은 Resource 여야합니다. 물론 다른 폴더 이름이나 폴더 구조를 사용할 수도 있습니다. "Images/MyPic0.jpg". – Clemens

+0

파일이 있습니다. 처음부터 프로젝트의 리소스에 드래그 앤 드롭했습니다. 솔루션 탐색기의 리소스 폴더를 참조하십시오. 내게는 이상하게 보입니다. 왜냐하면 모든 것이 완벽하게 작동하기 때문에 Resource를 쓰지 않고도 'Content ='없이 직접 컨트롤에 이미지를 지정할 수 있습니다. 그리고 이러한 사용자 정의 RadioButton에 대해서는 실패합니다. –