我正在Resizer内部使用扩展器(带有调整大小抓手的ContentControl),并且当控件最初出现时它会正确扩展/折叠。一旦我调整它的大小,扩展器就不会正常崩溃,如下所述。我在我的应用程序上运行了Snoop,我没有看到Expander或其组成部分的任何高度。
我如何才能说服Expander再次正常崩溃?或者修改Resizer以使扩展器不会让人感到悲伤。
Expander文档说:
“为了使Expander正常工作,当ExpandDirection属性设置为Down或Up时,不要在Expander控件上指定高度。同样,当ExpandDirection属性设置为Left时,不要在Expander控件上指定Width或者右键。当您在展开扩展内容的方向上在Expander控件上设置大小时,将显示由size参数定义的区域,并在其周围显示边框。即使窗口折叠,此区域也会显示。设置展开窗口的大小,在Expander控件或包含内容的ScrollViewer的内容上设置大小尺寸。“
答案 0 :(得分:1)
我通过在扩展器中移动Resizer解决了这个问题,但我在其他地方遇到了扩展器问题,所以如果有人有这个问题仍然会有答案。
感谢
答案 1 :(得分:1)
此后我没有机会模拟这个特定问题,但我最近发现将Height或Width设置为Double.NaN会将其重置为默认的自由行为。
具有讽刺意味的是,这是因为我首先阅读了我正在使用的Resizer控件的代码。
答案 2 :(得分:1)
回答这个问题有点晚了(2年多),但是,嘿,迟到总比没有好,对吗?
无论如何,我遇到了这个问题,并且能够通过一些代码隐藏来解决它,以保存和重置列宽。
我有一个3列圆柱,第一列有一些内容,第二列有GridSplitter,第三列有Expander。看起来发生的事情是,在移动GridSplitter之后,包含Expander的列的宽度从Auto更改为固定大小。这导致Expander不再按预期崩溃。
所以,我添加了一个私有变量和两个事件处理程序:
private GridLength _columnWidth;
private void Expander_Expanded (object sender, RoutedEventArgs e)
{
// restore column fixed size saved in Collapse event
Column2.Width = _columnWidth;
}
private void Expander_Collapsed (object sender, RoutedEventArgs e)
{
// save current column width so we can restore when expander is expanded
_columnWidth = Column2.Width;
// reset column width to auto so the expander will collapse properly
Column2.Width = GridLength.Auto;
}
当展开器折叠时,我保存了Column2的固定宽度(在某处某处自动神奇地自动改变了),然后将宽度重置为自动。
然后,当展开扩展器时,我将列恢复到固定宽度,使其扩展到折叠前的宽度。
以下是XAML供参考:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition x:Name="Column2" Width="Auto" />
</Grid.ColumnDefinitions>
<ScrollViewer Grid.Column="0" VerticalScrollBarVisibility="Auto">
<!-- some content goes here -->
</ScrollViewer>
<GridSplitter HorizontalAlignment="Right" VerticalAlignment="Stretch"
Grid.Column="1" ResizeBehavior="PreviousAndNext" Width="5"
Background="Black" />
<Expander Grid.Column="2" ExpandDirection="Left"
IsExpanded="True" Style="{StaticResource LeftExpander}"
Expanded="Expander_Expanded" Collapsed="Expander_Collapsed">
<Grid>
<TextBox TextWrapping="Wrap" Height="Auto" Margin="0 5 5 5" />
</Grid>
</Expander>
</Grid>
答案 3 :(得分:0)
我在使用GridSplitter的Grid中使用Expander遇到了类似的问题。扩展/折叠行为正常,直到我移动拆分器......然后,扩展器不会崩溃,它只隐藏其内容。
我还在寻找一种解决方法......你最终找到了吗?