未使用HeaderedContentControl标头模板

时间:2018-06-18 16:03:49

标签: c# wpf xaml

我是WPF的新手,正在使用一些遗留代码,不知道如何使用HeaderedContentControl标头。我想放入一个StackPanel并自定义标题的外观,但不知道该怎么做。

有人可以给我一些关于下一步该做什么的指导吗?

我有这个xaml并且永远不会使用HeaderTemplate。

<UserControl x:Class="PEC.Admin.WindowsControls.Program.Views.ProgramProductEnrichmentColorsView"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:commonControls="clr-namespace:ManagerConsole.Common.Controls;assembly=ManagerConsole.Common.Controls"
         xmlns:program="clr-namespace:PEC.Admin.ViewModel.Program;assembly=PEC.Admin.ViewModel.Program"
         mc:Ignorable="d" 
         d:DesignWidth="300" 
         d:DataContext="{d:DesignInstance program:ProgramProductEnrichmentColorsViewModel}">
    <commonControls:ExpanderPanel IsExpanded="{Binding Path=IsExpanded,Mode=TwoWay}">
        <HeaderedContentControl.HeaderTemplate> <!-- this never gets used... -->
            <DataTemplate>
                <StackPanel>
                    <Label Content="{Binding Path=Header}"></Label>
                </StackPanel>
            </DataTemplate>
        </HeaderedContentControl.HeaderTemplate>
        <StackPanel HorizontalAlignment="Stretch"
                    VerticalAlignment="Top"
                    Width="Auto"
                    Margin="3"
                    Background="White">
            <TextBlock Text="Source Type:"
                       Margin="0,5,0,0" />
            <TextBox IsReadOnly="True"
                     IsTabStop="False"
                     Background="LightGray"
                     BorderThickness="0"
                     Text="{Binding Path=SourceTypeName, Mode=OneTime}" />
        </StackPanel>
    </commonControls:ExpanderPanel>
</UserControl>

1 个答案:

答案 0 :(得分:1)

应用了HeaderTemplate 。要验证它 - 在HeaderTemplate中为Label设置背景。

HeaderTemplate不会显示任何内容,因为绑定不正确。模板应用于Header属性中的数据集,该属性当前具有null值。

所以改变代码如下例所示(我尝试使用Expander,希望它适用于自定义commonControls:ExpanderPanel):

<Expander IsExpanded="{Binding Path=IsExpanded, Mode=TwoWay}" 
          Header="{Binding ComplexObject}">
  <HeaderedContentControl.HeaderTemplate>
    <DataTemplate>
        <StackPanel>
            <Label Background="Green" Content="{Binding PropertyOfTheObject}"/>
        </StackPanel>
    </DataTemplate>
  </HeaderedContentControl.HeaderTemplate>
</Expander>

Header是一个依赖属性,可以通过Binding设置。标头成为HeaderTemplate中绑定的源。或者它可以是一些常量(Header="Click to expand"),资源(Header="{StaticResource ExpandTitle}")或复杂内容,例如:

<Expander.Header>
   <TextBlock Text="Click to expand"/>
</Expander.Header>