더 좋은 방법이 있습니다.
클립 아트의 각 조각에는 개별 파일이 있지만 사이트에서 사용하는 래퍼는 아닙니다. Canvas 인스턴스는 리소스 사전에 직접 배치되어 가장 좋은 방법은 아닙니다. 우리는 ResourceDictionary
로 시작하지만 이런 식으로 뭔가 보일 것입니다 : -
가
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:YourApplication">
<ControlTemplate TargetType="local:XamlImage" x:Key="SomeImage">
<Viewbox>
<Canvas> <!-- this the toplevel canvas from the site or your design -->
</Canvas>
</Viewbox>
</ControlTemplate>
</ResourceDictionary>
이 두 가지, 첫째는 이미지를 포함하는 ControlTemplate
를 사용 않습니다를,이 스토리지의보다 효율적인 형태로 할 때 이미지입니다 이미지가 아이콘으로 사용될 때와 같이 여러 번 사용할 수 있습니다.
두 번째로 벡터 기반 그래픽을 제공하는 Viewbox
을 사용하여 이미지를 지정된 크기로 조정할 수 있습니다.
프로젝트에 새 Templated Custom Control
을 추가하고 XamlImage
이라고해야합니다. 당신은 아무 것도 할 필요가 없으며 단지 존재할 필요가 있습니다.
당분간이 리소스 사전을 App.Xaml에 추가 할 수 있습니다 (남아있는 곳은 없을 것입니다).
는 이제 사용하여 페이지에 이미지를 배치 할 수 있습니다 : -
<local:XamlImage Template="{StaticResource contactnew}" />
이제 여러 가지 방법으로 앞으로가 당신의 진짜 의도와 볼륨에 따라 시나리오는 저를 위해 철저히 설명하기 위해 다양했습니다. 따라서 두 가지 극단을 취하십시오 ...
이미지를 선택하고 싶다면 더 많은 파일을 만들고 app.xaml의 MergedDictionaries
에 추가하면됩니다. 그러나 큰 측면은 응용 프로그램 시작시 이러한 모든 이미지 Xamls가 구문 분석되고로드되는 것이 바람직하지 않을 수 있다는 것입니다.
반면에 분류 된 Xaml 클립 아트 라이브러리가있을 수 있습니다. 이 경우 폴더 구조에 배치하고 각각에 대해 표준 크기의 축소판 그림을 포함 할 수 있습니다. 카탈로그로 작동하고 필요에 따라 Xaml 파일을로드 할 Xml 파일이 경우 파일에서 ResourceDictionary
을 삭제하고 ControlTemplate
을 루트 요소로 사용하고 XamlReader
을 사용하여 템플릿을로드 한 다음 템플릿을 자신의 사전에 캐싱 (아마도 카탈로그 구현의 일부로)합니다.
+1 정확함. generader 요소를 여러 번 사용할 수 없을 때 리소스에 저장하면 여러 번 파싱 할 필요가 없습니다. –
'Load'의 결과를'UIElement'로 형변환해야합니다. – AnthonyWJones
@Luc : 다운로드 한 Xaml의 결과가 'DataTemplate'일 필요가 있다는 것을 생각하면 좋습니다. 그러면 이미지의 여러 인스턴스가'DataTemplate'의'LoadContent' 메소드로 생성 될 수 있습니다. – AnthonyWJones