And*_*ers 9 wpf accordion wpftoolkit
我有一个手风琴,其内容的高度可以动态调整大小.我想看到Accordion动态响应子项的高度,但我在这方面遇到了麻烦.
<lt:Accordion Name="MyAccordion"
SelectionMode="ZeroOrOne"
HorizontalAlignment="Stretch">
<lt:AccordionItem Name="MyAccordionItem"
Header="MyAccordion"
IsSelected="True"
HorizontalContentAlignment="Stretch"
VerticalAlignment="Stretch">
<StackPanel>
<Button Content="Grow" Click="Grow"/>
<Button Content="Shrink" Click="Shrink"/>
<TextBox Name="GrowTextBox"
Text="GrowTextBox"
Height="400"
Background="Green"
SizeChanged="GrowTextBox_SizeChanged"/>
</StackPanel>
</lt:AccordionItem>
</lt:Accordion>
private void Grow(object sender, System.Windows.RoutedEventArgs e)
{
GrowTextBox.Height += 100;
}
private void Shrink(object sender, System.Windows.RoutedEventArgs e)
{
GrowTextBox.Height -= 100;
}
private void GrowTextBox_SizeChanged(object sender, System.Windows.SizeChangedEventArgs e)
{
MyAccordion.UpdateLayout();
MyAccordionItem.UpdateLayout();
}
Run Code Online (Sandbox Code Playgroud)
请注意,如果我崩溃然后重新打开手风琴,它就会按照我想要的方式成型,但我希望在孩子调整大小时立即调整大小.
我试图通过添加一个在Accordion和AccordionItem上调用UpdateLayout()的SizeChanged事件处理程序来解决这个问题,但这没有任何视觉效果.我无法弄清楚在Accordion控件内进行适当调整的位置.有没有人有想法?
试试这个
//here i am creating a size object depending on child items height and width
// and 25 for accordian item header...
// if it works you can easily update the following code to avoid exceptional behaviour
Size size = new Size();
size.Width = GrowTextBox.ActualWidth;
size.Height = grow.ActualHeight + shrink.ActualHeight + GrowTextBox.ActualHeight + 25;
MyAccordion.Arrange(new Rect(size));
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我只是根据子项目的大小重新排列手风琴。
| 归档时间: |
|
| 查看次数: |
2616 次 |
| 最近记录: |