ScrollViewer в StackPanel - PullRequest
       43

ScrollViewer в StackPanel

1 голос
/ 16 августа 2010
<StackPanel Name="mypanel">
   <ScrollViewer Height="{Binding ElementName=mypanel, Path=ActualHeight}">

Мне нужно Height = mypanel.ActualHeight-60.

Как мне это сделать?

РЕДАКТИРОВАТЬ:

<StackPanel Name="mypanel">
    <ContentControl Content="{Binding HeaderPart}" /> <= here must be Expander
    <ScrollViewer Height="{Binding ElementName=mypanel, Path=ActualHeight, Converter={StaticResource HeightConverter}}" >
        <StackPanel>
        </StackPanel>
    </ScrollViewer>

Когданет Expander, все работает.Когда Expander, mypanel.ActualHeight, HeightAdjustmentConverter = 0.

Что случилось?

1 Ответ

1 голос
/ 16 августа 2010

Вам нужно написать IValueConverter , который принимает ActualHeight и возвращает новое значение этого минус 60.

Что-то вроде:

[ValueConversion(typeof(double), typeof(double))]
public class HeightAdjustmentConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        double original = (double)value;
        return double - 60;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        double adjusted = (double)value;
        return adjusted + 60;
    }
}
...