首先,我为重新激活一个非常古老的主题appologise,但下面的代码可以说明TerrorAustralis响应。
Part 1 ScrollViewer的Heigth属性取决于Accordion的ActualHeigth。要进行详细调整,您可以更改ConverterParameter值。
<UserControl ...
xmlns:local="clr-namespace:MyProject.namespace.converters"
xmlns:lTk="clr-namespace:System.Windows.Controls;assembly=DotNetProjects.Layout.Toolkit">
<lTk:Accordion HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<lTk:Accordion.Resources>
<local:RemoveMarginConverter x:Key="RemoveMarginConverter"/>
<Style TargetType="lTk:AccordionItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
</Style>
</lTk:Accordion.Resources>
<lTk:AccordionItem Header="Part 1">
<ScrollViewer VerticalScrollBarVisibility="Auto" Background="White"
Height="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type lTk:Accordion}},
Path=ActualHeight, Converter={StaticResource RemoveMarginConverter}, ConverterParameter=px50}">
<!-- Part 1 content -->
</ScrollViewer>
</lTk:AccordionItem>
<lTk:AccordionItem Header="Part 2">
<ScrollViewer VerticalScrollBarVisibility="Auto" Background="White">
<!-- Part 2 content -->
</ScrollViewer>
</lTk:AccordionItem>
</lTk:Accordion>
</UserControl>
和转换器的代码:
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;
namespace MyProject.namespace.converters
{
public class RemoveMarginConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var val = System.Convert.ToInt32(value);
var margin = System.Convert.ToInt32(parameter.ToString().Replace("px", ""));
return val - margin;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
}
我没有在我用手风琴看到了这一点,目前的版本截至今天,在.NET 4.0应用程序 – Marcel 2011-06-15 16:35:50