我正在使用Windows Phone工具包中的ExpanderView。我添加的是每个标题下方的行。我无法做的是可扩展标头的拉伸线。
<toolkit:ExpanderView x:Name="ev" HorizontalAlignment="Stretch" Margin="0,0,0,8"
Header="{Binding}"
NonExpandableHeader="{Binding}"
Expander="{Binding}"
ItemsSource="{Binding}"
IsNonExpandable="{Binding HasSingleMessage}">
<toolkit:ExpanderView.HeaderTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding LastMessageReceived.Header}"
HorizontalAlignment="Stretch"
Foreground="Black"
FontSize="{StaticResource PhoneFontSizeLarge}"
FontFamily="{StaticResource PhoneFontFamilySemiLight}"/>
<Rectangle Height="1" StrokeThickness="0" Fill="Black" Margin="0,8" />
</StackPanel>
</DataTemplate>
</toolkit:ExpanderView.HeaderTemplate>
最佳答案
深入了解这有点棘手。最重要的是,我认为获得所需结果的唯一方法(扩展该行)是在XAML资源中包含control template的修改版本,并使标头拉伸以填充其容器。
如果在链接上检查源代码,然后向下滚动到ExpanderView
控件模板,您将看到header元素的定义如下:
<ListBoxItem x:Name="ExpandableContent" controls:TiltEffect.IsTiltEnabled="True"
Grid.Row="0" Grid.Column="0" Grid.RowSpan="2" Grid.ColumnSpan="2">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="41"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<ContentControl x:Name="Header"
HorizontalContentAlignment="Stretch"
HorizontalAlignment="Stretch"
Content="{TemplateBinding Header}"
ContentTemplate="{TemplateBinding HeaderTemplate}"
Grid.Row="0" Grid.Column="0"
Grid.ColumnSpan="2"/>
<ContentControl x:Name="Expander"
Margin="11,0,0,0"
Grid.Row="1" Grid.Column="1"
HorizontalContentAlignment="Stretch"
HorizontalAlignment="Stretch"
Content="{TemplateBinding Expander}"
ContentTemplate="{TemplateBinding ExpanderTemplate}"/>
<Grid x:Name="ExpanderPanel" Grid.Row="0" Grid.Column="0"
Grid.RowSpan="2" Grid.ColumnSpan="2" Background="Transparent"/>
</Grid>
</ListBoxItem>
现在,乍一看,这看起来不错,因为“标头” ContentControl将
HorizontalAlignment
和HorizontalContentAlignment
都设置为“ Stretch”。不幸的是,父ListBoxItem
没有定义其HorizontalContentAlignment
,其默认值可能不是“ Stretch”。 (我不确定这一点,因为MSDN documentation没有列出默认值-但相应属性的默认值为"Left" in WPF和"Center" in Silverlight。)因此,我将尝试将默认控件模板复制到您的应用程序资源中,并将适当的对齐方式添加到“ ExpandableContent” ListBoxItem中:
<ListBoxItem x:Name="ExpandableContent"
HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" ...
关于c# - Windows Phone工具包中带有ExpanderView的自定义 header ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26362978/