Wpf 如何将扩展器收割台高度从XAML传递到转换器
我在StackPanel中有两个扩展器,里面有很多内容。让我们将它们命名为A和B。当A打开而B关闭时,我希望A获得最大高度=窗口高度-标题高度。我希望使用转换器来实现这一点 我的问题是我无法将膨胀机B收割台的高度传递到转换器。尝试以下操作:Wpf 如何将扩展器收割台高度从XAML传递到转换器,wpf,expander,Wpf,Expander,我在StackPanel中有两个扩展器,里面有很多内容。让我们将它们命名为A和B。当A打开而B关闭时,我希望A获得最大高度=窗口高度-标题高度。我希望使用转换器来实现这一点 我的问题是我无法将膨胀机B收割台的高度传递到转换器。尝试以下操作: <Grid x:Name="MyMainGrid"> <Grid.Resources> <local:MaxHeightConverter x:Key="MaxHeightConverter" />
<Grid x:Name="MyMainGrid">
<Grid.Resources>
<local:MaxHeightConverter x:Key="MaxHeightConverter" />
</Grid.Resources>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<StackPanel>
<Expander x:Name="E1"
Header="E1">
<Expander.MaxHeight>
<MultiBinding Converter="{StaticResource MaxHeightConverter}">
<Binding ElementName="E2" Path="ActualHeight" />
<Binding ElementName="MyMainGrid" Path="ActualHeight" />
</MultiBinding>
</Expander.MaxHeight>
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<TextBlock>
This has long content
<LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak />
End
</TextBlock>
</ScrollViewer>
</Expander>
<Expander x:Name="E2"
Header="E2">
<Expander.MaxHeight>
<MultiBinding Converter="{StaticResource MaxHeightConverter}">
<Binding ElementName="E1" Path="ActualHeight" />
<Binding ElementName="MyMainGrid" Path="ActualHeight" />
</MultiBinding>
</Expander.MaxHeight>
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<TextBlock>
This has long content
<LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak /><LineBreak />
End
</TextBlock>
</ScrollViewer>
</Expander>
</StackPanel>
</Grid>
你试过什么方法?已发送带有ElementName绑定的标头?扩展程序无法使用name属性。HeaderThat不是我的意思,您是如何尝试发送扩展程序的?
public class MaxHeightConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
if (values.Length != 2 || !(values[0] is double) || !(values[1] is double)) throw new ArgumentException("Incorrect parameters passed to MaxHeightConverter");
return (double) values[1] - (double) values[0];
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}