GridSplitter卡住了

时间:2013-12-04 10:15:39

标签: wpf gridsplitter issharedsizescope sharedsizegroup

我遇到问题,经过多次拖动后,(它似乎最初工作正常,你还必须在每次拖动之间释放鼠标按钮),网格分割器似乎卡住了,不再允许你拖动它,或者有时它会拖动几英寸,然后再次卡住。

我正在使用的代码实际上是在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调整大小后,分割器似乎会卡住,至少对我而言。

当你试图向左拖动时,它似乎也只会卡住。

1 个答案:

答案 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标签。