(WPF)如何用内容填充Expander-Control模板?

时间:2017-08-09 10:27:54

标签: wpf controltemplate expander contentpresenter

我没有尝试使用Controltemplate创建自定义扩展器。我的第一个问题是:我在哪里可以放置扩展器的内容(不是扩展器上显示的文本,如果单击扩展器,则内容会变为可见)?

这是我在App.xaml中的代码:

    <Application.Resources>

        <ControlTemplate x:Key="FileExpanderButton" TargetType="{x:Type ToggleButton}">
            <Image Name="BrowseUsedFiles" Source="F:\AudioNodeGUI_XAML\images\Browse_used_files.jpg">

            </Image>
        </ControlTemplate>

        <ControlTemplate x:Key="FileExpander" TargetType="{x:Type Expander}">
            <DockPanel>
                <ToggleButton x:Name="ExpanderButton" Template="{StaticResource FileExpanderButton}" OverridesDefaultStyle="True" DockPanel.Dock="Top"/>
                <ContentPresenter x:Name="ExpanderContent"
                          Visibility="Collapsed"
                          Content="{TemplateBinding Content}"
                          DockPanel.Dock="Bottom" />
            </DockPanel>
            <ControlTemplate.Triggers>
                <Trigger Property="IsExpanded" Value="True">
                    <Setter TargetName="ExpanderContent" 

              Property="Visibility" Value="Visible"/>
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>

    </Application.Resources>
</Application>

另一个问题:ContentPresenter究竟是什么?我可以简单地用我的内容替换它吗?

1 个答案:

答案 0 :(得分:0)

ExpanderContentControl,意味着它包含内容(其他XAML),但该内容未在控件模板中定义,它由使用该控件的任何人定义。

在控件模板中使用

ContentPresenter来显示该内容,就像您似乎正在做的那样。