2009-08-02 8 views
0

ASP.Net開発者として、私はマスターページをウェブページのテンプレートとして熟知しています。 SilverlightにASP.Netのマスターページと同等のメカニズムがありますか?シルバーライトのコントロールテンプレート

私は自分自身のように同様の制御を作成する繰り返したくないので:

ControlA

<UserControl> 
    <Grid> 
    <Button Click="ClickMe" /> 
    <Button Click="CancelMe" /> 
    <TextBlock /> 
    <StackPanel> 
     <!-- content start here --> 
     <Rectangle /> 
     <!-- content end here --> 
    </StackPanel> 
    <Grid> 
</UserControl> 

ControlB

<UserControl> 
    <Grid> 
    <Button Click="ClickMe" /> 
    <Button Click="CancelMe" /> 
    <TextBlock /> 
    <StackPanel> 
     <!-- content start here --> 
     <Canvas /> 
     <!-- content end here --> 
    </StackPanel> 
    <Grid> 
</UserControl> 

答えて

1

ItemsControlをこの特定の種類のテンプレートに使用できます。 ItemsControlは、文字列、オブジェクト、またはその他の要素など、複数の項目を含むことができるControlの種類です。以下の図のようにXAMLを変換します。あなたのコードビハインドでUserControlの代わりにItemsControlからクラスを派生させてください。

<ItemsControl> 
    <ItemsControl.Template> 
    <ControlTemplate TargetType="ItemsControl"> 
     <Grid> 
     <Button Click="ClickMe"/> 
     <Button Click="CancelMe"/> 
     <TextBlock/> 
     <ItemsPresenter/> 
     </StackPanel> 
    </ControlTemplate> 
    </ItemsControl.Template> 
    <ItemsControl.ItemsPanel> 
    <ItemsPanelTemplate> 
     <StackPanel/> 
    </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
</ItemsControl> 

新しいクラスの名前がMasterPageControlであるとします。このようなコントロールを使うことができます:

<local:MasterPageControl> 
    ... 
    <Rectangle/> 
    <Canvas/> 
    ... 
</local:MasterPageControl> 
2

概念が適用されないので、相当するものはありませんが、デスクトップアプリケーションには当てはまりません。

Silverlightアプリケーションの外観は、コントロールの階層によって実現されます。レイアウトはいつでも変更することができ、更新は次のレンダリングパスに反映されます(Windowsフォームよりも改善されています)。

例を正しく実装するには、ControlAとControlBに共通するすべてのコンテンツを持つUserControlを1つ作成し、必要に応じてStackPanelの内容を変更します。おそらくコンストラクタ内で、他のコントロール。いつ、どのくらいの頻度でこれを行うのは、あなた次第です。

Silverlightを使用すると、従来のWebテクノロジの組み合わせよりもダイナミックで使いやすいインターフェイスを簡単に作成できます。

関連する問題