繁体   English   中英

没有使用HeaderedContentControl标头模板

[英]HeaderedContentControl header template not being used

我对WPF还是很陌生,并且正在使用一些旧代码,不确定如何使用HeaderedContentControl Header。 我想放入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>

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>

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM