0

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

我使用的代码实际上是在 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 个网格时,gridsplitter 会更快地卡住)。

因此,如上所述,如果您尝试多次调整大小(在每次拖动之间释放鼠标按钮),在 5-10 次调整大小后,拆分器似乎卡住了,至少对我来说是这样。

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

4

1 回答 1

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,但是我的想法是使用绑定到相同的属性,从而提供共享大小......将 GridSplitter 放在里面,但最重要的是不要使用那些 SharedSizeGroup 标签。

于 2013-12-04T12:34:05.143 回答