原因不明的网格布局宽度行为

时间:2012-06-28 05:58:31

标签: c# wpf xaml layout grid-layout

WPF / XAML的新手,我一直在努力解决布局并试图让它变得统一。我正在使用网格列表框,不同列中包含不同的数据。我将首先说出所需的行为:列的统一开始和结束位置,我认为可以通过在* s中使用基于Width的{​​{1}}来实现。

在最近来自底部的GitHub链接的diff中,使用虚拟数据,列是均匀的,具有各种字符串长度。但由于某些原因,当我使用从ColumnDefinition s中抽取的实际数据时,均匀性会从窗口中消失,其中第二列根据DirectorySizer的长度从不同的位置开始。我唯一能想到的是,如果数据的某种程度长于列,那么情况似乎并非如此(在内存DirPath中进行检查会得到适当的修剪)。

对此有何解决方案/解释?我很茫然。

Diff between desired and undesired behavior

2 个答案:

答案 0 :(得分:2)

您应该考虑在列表框中使用Grid.IsSharedSizeScope。使用此功能,您可以根据属性" SharedSizeGroup"使所有网格共享相同的列大小。在columnDefinition中。我知道这不是一个彻底的解释,所以请在Grid.IsSharedSizeScope上谷歌,你找到你需要的东西。

您看到的行为差异也可能由您使用的数据源的不同结构来解释。而不是做一个字符串数组,其中完全相同的值绑定到每一列尝试设置一个具有两个不同字符串值并绑定到该类的类。这样,它将对您的DirectorySizer对象进行更有效的比较

答案 1 :(得分:0)

显然,INotifyPropertyChanged的某些内容会导致布局失控。当Notify()出现并显示新内容时,布局系统只是在内容和网格线之间保持填充,如果内容的大小不同,则会导致对齐变形。