이 질문이 지나치게 단순하지만 유감스럽게도 컨트롤에 배경을 만드는 방법을 파악하는 데 어려움을 겪고 있습니다. 앱 성능을 개선 할 수 있기를 바랍니다.스키닝 컨트롤 배경 - 성능 향상?
나는 9 개의 다른 컨트롤을 가지고 있습니다. 그들 모두는 배경을 가지고 있습니다. 배경은 이미지, 다른 컨트롤 또는 둘 모두로 구성됩니다. 모든 배경에는 또 다른 배경이 있습니다.
이 점을 슬라이드, 슬라이드 레이아웃 및 슬라이드 마스터가있는 파워 포인트 (이 순서대로 상속 됨)처럼 생각하십시오. 9 개의 슬라이드/컨트롤이 있습니다.
- 처음 3 컨트롤이 같은 "컨트롤 레이아웃을"이 (의이 ControlLayout1를 부르 자). ControlLayout1은 요소 중 일부를 ControlMaster1에서 가져옵니다.
- 두 번째 컨트롤도 동일한 컨트롤 레이아웃을 가지고 있지만 첫 번째 컨트롤과 다른 입니다. ControlLayout2으로 부르 자. 또한 은 ControlMaster1에서 상속됩니다.
- 3 개의 컨트롤의 마지막 세트가 다시 달라집니다. 우리는 그들을 ControlLayout3이라고 부를 수 있습니다. 하지만 이번에는 다른 마스터로부터 상속받습니다. ControlMaster2.
지금은 각 컨트롤에서 각 XAML을 개별적으로 작성하고 있습니다. 나는이 각각의 항목 각각에 이것을 쓰지 않는 방법이 있어야한다고 생각하고 있습니다. 이상적으로 내가 만들고자하는 것은 재사용 할 수있는 XAML 집합입니다. 에 대한 다음 (다른 곳에 Application.Resources 나 같은 몰라요) ControlLayouts에 대한 어딘가에 다음
<UserControl x:Name="Control1">
<MyBackground (ControlLayout1)/>
</UserControl>
<UserControl x:Name="Control2">
<MyBackground (ControlLayout2)/>
</UserControl>
<UserControl x:Name="Control3">
<MyBackground (ControlLayout3)/>
</UserControl>
그리고
<Canvas x:Name="ControlLayout1">
<MyMasterBackground (ControlMaster1)/>
</Canvas>
<Canvas x:Name="ControlLayout2">
<MyMasterBackground (ControlMaster1)/>
<TextBox Text="The Control 2">
</Canvas>
<Canvas x:Name="ControlLayout3">
<MyMasterBackground (ControlMaster2)/>
<TextBox Text="The Control 3">
</Canvas>
그리고 다음은
어떤 의사 XAML의 제어 마스터<Canvas x:Name="ControlMaster1">
<Canvas.Background>
<ImageBrush ImageSource="/Images/image1.jpg" />
</Canvas.Background>
</Canvas>
<Canvas x:Name="ControlMaster2">
<Canvas.Background>
<ImageBrush ImageSource="/Images/image2.jpg" />
</Canvas.Background>
<TextBox Text="Control Master 1">
</Canvas>
일단 정의되면 ControlLayouts와 ControlMasters는 결코 변경할 필요가 없습니다. 정적입니다.
이러한 모든 것을 한 곳에 넣고 XAML을 다시 사용할 수 있다면 더 작은 XAP을 넘어서서 ControlLayouts가 자동으로 BitmapCached 또는 그와 비슷한 것을 얻을 때 성능이 향상 될 것으로 기대됩니다.
먼저, 위의 구현을위한 좋은 전략이 있습니까? (ControlLayouts 및 Masters에는 코드 숨김이 없습니다)? 두 번째로 Control1, Control2 등의 로딩 성능이 향상 될 것인가? 마지막으로 순수한 사용자 컨트롤 (예 : 코드가 뒤떨어져있는 경우)이 성능이 더 좋을까요?
미리 감사드립니다.[배경 일에 대해
: 단지의 UserControl의 뒤에있는 코드 형 브러시의 종속성 속성 (의이 MyBackgroundDP를 부르 자)를 생성하고 바인딩
정적 물건을 BitmapCached로 만들려면 수동으로 설정해야합니다. 어떤 것들은 [자동 캐싱] (http://msdn.microsoft.com/en-us/library/ff602285(v=9595.aspx))이지만 수동으로 큰 차이를 만들 수있는 나의 경험에 의하면, 특히 UI 요소를 많이 옮겨 다니면서 갑작스러운 성능을 보았을 때 그렇습니다. –