2012-06-28 38 views
0

在WPF/XAML的新手,我一直在与布局摔跤,并试图使其统一。我正在使用网格列表框,不同列中的数据不同。我将首先说出所需的行为:列的统一开始和结束位置,我认为可以通过在ColumnDefinition中使用*Width s来实现。不明原因的网格布局宽度行为

而在最近的来自底部的GitHub链接的差异与虚拟数据,列是统一的各种字符串长度。但由于某种原因,当我使用从DirectorySizer s得到的实际数据时,均匀性就会出现在窗口中,其中第二列从基于DirPath长度的不同位置开始。我能想到的唯一情况是,如果数据在某种程度上比专栏更长,似乎并不是这样(检查内存DirPath出现适当修剪)。

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

Diff between desired and undesired behavior

回答

2

你应该看看你的列表框使用Grid.IsSharedSizeScope。使用此方法,您可以根据columnDefinition中的属性“SharedSizeGroup”使所有网格共享相同的列大小。我知道这不是一个彻底的解释,所以请只在谷歌Grid.IsSharedSizeScope和你找到你需要的。

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

+0

我会看看SharedSizeScope,谢谢 –

0

显然有关INotifyPropertyChanged导致布局失控。当发生Notify()并且显示新内容时,布局系统只是简单地保持内容和网格线之间的填充,如果内容的大小不同,则导致对齐变形。