我遇到问题,经过多次拖动后,(它似乎最初工作正常,你还必须在每次拖动之间释放鼠标按钮),网格分割器似乎卡住了,不再允许你拖动它,或者有时它会拖动几英寸,然后再次卡住。
我正在使用的代码实际上是在ItemTemplate中,但为了演示问题,我已经提取出下面的问题代码。
<StackPanel Grid.IsSharedSizeScope="True">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" SharedSizeGroup="SharedColumnWidth" />
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Content="Name"
Grid.Column="0" />
<GridSplitter HorizontalAlignment="Center"
VerticalAlignment="Stretch"
Grid.Column="1"
Width="5" />
<TextBox Grid.Column="2"/>
</Grid>
</StackPanel>
(复制并粘贴Grid元素,这样堆栈面板中有几个,我发现当你有至少10个网格时,网格探测器会更快地卡住)。
如上所述,如果你尝试多次调整大小(在每次拖动之间释放鼠标按钮),在5-10调整大小后,分割器似乎会卡住,至少对我而言。
当你试图向左拖动时,它似乎也只会卡住。
答案 0 :(得分:1)
是的,这是一个众所周知的错误:
http://connect.microsoft.com/VisualStudio/feedback/details/509801/
例如,有一种解决方法可以绑定到ViewModel的属性。那就是这样的:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{Binding Path=Width, Mode=TwoWay}" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
....
</Grid>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="{Binding Path=Width, Mode=TwoWay}" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
....
</Grid>
因此,这两个网格将为第一列共享相同的宽度。
此方法要求您使用正确的ViewModel。 :)
修改强>
我忘记了GridSplitter,但是想法是将Bindings用于相同的属性,以便提供共享大小......将GridSplitter放在里面,但最重要的是不要使用那些SharedSizeGroup标签。