2012-03-16 14 views
0

他の関連する質問にはスキミングしましたが、私はこの明示的な質問に答えた何かを見ませんでした。XAML内からControlTemplateの一部として作成された要素にアクセス/変更する方法は?

(私の場合、私は私が使用しているクラスの数はどこから来ているマイクロソフト・サーフェス・アプリケーション、に取り組んでいます)

だから、私は含むElementMenuを添付したいのですが

<ControlTemplate x:Key="MenuedSVITemplate" TargetType="{x:Type s:ScatterViewItem}"> 
    <Grid> 
    <ContentPresenter Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}"/> 
     <s:ElementMenu Name="Menu" HorizontalAlignment="Right" VerticalAlignment="Top" ActivationMode="AlwaysActive"> 
     <s:ElementMenuItem Name="MenuItemClose" Header="Close" Click="CloseItemClicked"/> 
     </s:ElementMenu> 
    </ContentPresenter> 
    </Grid> 
</ControlTemplate> 

そして、私は、その使用に後でこのテンプレートをScatterViewItemsを作成することができます:

<ScatterViewItem Name="SomeItem" Template="{StaticResource MenuedSVITemplate"/> 

私はそうのように行うことができます私のScatterViewの各ScatterViewItemにいくつかの固定項目、しかし、テンプレートに定義されたメニューにアイテムを追加したいのですが? XAMLでこれを行う方法はありますか? (Template.FindNameを使用してElementMenuを取得し、ダウンキャストし、メニュー項目をプログラムで追加することで、コードビハインドでそれを実行できることはわかっています)。

ありがとうございます!

答えて

0

率直に言って、私はこれがうまくいくとは思っていませんでしたが、そうしました。 ContentPresenterの場所を確認してください:

<Window.Resources> 
    <ControlTemplate x:Key="MenuedSVITemplate" 
        TargetType="{x:Type Button}"> 
    <Grid> 
     <Menu Name="Menu" 
      HorizontalAlignment="Right" 
      VerticalAlignment="Top"> 
     <MenuItem Name="MenuItemClose" 
        Header="Close" 
        Click="CloseItemClicked" /> 
     <ContentPresenter Content="{TemplateBinding Content}" 
          ContentTemplate="{TemplateBinding ContentTemplate}" /> 
     </Menu> 
    </Grid> 
    </ControlTemplate> 
</Window.Resources> 
<Grid> 
    <Button Template="{StaticResource MenuedSVITemplate}"> 
    <MenuItem Name="MenuItemHello" 
       Header="Hello" /> 
    </Button> 
</Grid> 
+0

これは興味深いですが、テンプレート化されたアイテムのコンテンツを指定できるようにしたい場合はどうなりますか?例えばあなたのボタンがグリッドの場合、グリッドの内容と添付されたメニューの両方を指定できるようにしたいのですか?どうにかして、別のコンテンツを表示する2番目のContentPresenterを使用できますか? – Sbodd

関連する問題