2010-08-16 18 views
1
<StackPanel Name="mypanel"> 
    <ScrollViewer Height="{Binding ElementName=mypanel, Path=ActualHeight}"> 

J'ai besoin, Height = mypanel.ActualHeight-60.ScrollViewer dans StackPanel

Comment puis-je le faire?

EDIT:

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

Lorsqu'il n'y a pas Expander, tout fonctionne. Lorsque le Expander est, mypanel.ActualHeight, HeightAdjustmentConverter = 0.

Que s'est-il passé?

Répondre

1

Vous devez écrire un IValueConverter qui prend en ActualHeight et retourne une nouvelle valeur de ce moins 60.

Quelque chose comme:.

[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; 
    } 
} 
+0

oh, merci =^^ = – Kira

+0

En XAML il sera comme ça? Kira

+0

@Kira Oui, cela serait exact, avec une ligne quelque part pour créer réellement la ressource statique. –