C# 如何从XAML中访问/修改作为ControlTemplate一部分创建的元素?

C# 如何从XAML中访问/修改作为ControlTemplate一部分创建的元素?,c#,wpf,templates,styles,pixelsense,C#,Wpf,Templates,Styles,Pixelsense,浏览了其他相关的问题,但我没有看到什么东西能回答这个明确的问题 (在我的例子中,我正在使用一个Microsoft Surface应用程序,我使用的许多类都来自该应用程序) 因此,我想将包含几个固定项的ElementMenu附加到我的ScatterView中的每个ScatterViewItem,我可以这样做: <ControlTemplate x:Key="MenuedSVITemplate" TargetType="{x:Type s:ScatterViewItem}"> <

浏览了其他相关的问题,但我没有看到什么东西能回答这个明确的问题

(在我的例子中,我正在使用一个Microsoft Surface应用程序,我使用的许多类都来自该应用程序)

因此,我想将包含几个固定项的ElementMenu附加到我的ScatterView中的每个ScatterViewItem,我可以这样做:

<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"/>

但是,如果我想向模板中定义的菜单添加其他项,该怎么办?在XAML中有什么方法可以做到这一点吗?(我知道我可以通过使用Template.FindName以编程方式获取ElementMenu、向下转换和添加菜单项,在代码隐藏中实现这一点。)


提前谢谢

坦率地说,我没料到这会奏效,但它确实奏效了。检查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>

好的,这很有意思,但是如果我还想指定模板项的内容呢?e、 g.如果你的按钮是一个网格,我希望能够同时指定网格的内容和附加菜单?你能让另一个ContentPresenter显示不同的内容吗?