我是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>
答案 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>