在ItemsControl中调整面板大小

时间:2011-09-27 23:06:01

标签: wpf

我有一个父视图模型,它包含其他视图模型(相同类型)(子)的集合。在初始化时,将决定孩子的数量(变化)。

子视图包含一个按钮和一个列表框。最初,列表框是隐藏的。单击按钮时,将出现列表框,单击外部(控件外部或任何其他子按钮)。

在初始化时,将显示按钮。我希望这些按钮在可用宽度上间隔开。要求是一旦点击按钮(当显示列表框时),整个孩子的宽度将增加(比方说350),当它被隐藏时,它将恢复到原始大小。

在父级中,我使用ItemsControl来显示子视图。我已尝试过所有控件,但无法为此找到合适的解决方案。我有两个问题:

  1. 点击按钮,我可以显示当前列表框。如果我点击另一个按钮,首先一个按钮熄灭。直到这里它工作正常。但我还需要当前打开的列表框在控件(子控件)之外的任何位置单击关闭

  2. 如何根据点击的内容自动调整大小和调整大小。首先,所有都应该按比例调整大小,然后当点击一个时,它的大小会增加(这里其他子节点会随着剩余的可用空间调整大小)。当一个(开放式控制)折叠时,它们全部恢复到正常的支撑尺寸。

  3. 有什么想法吗?

    BTW,我正在使用MVVM模式。

1 个答案:

答案 0 :(得分:0)

如何使用标志来指示视图执行计算,并在需要时刷新/重新调整大小。

像点击例程一样,设置标志 每当启动视图(预)绘画/绘图事件时,检查标志是否打开,执行计算和大小调整,然后关闭标记。