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>

(グリッド要素をコピーして貼り付けて、スタックパネルにいくつかあるようにします。少なくとも 10 個のグリッドがあると、グリッドスプリッターがより速くスタックすることがわかりました)。

したがって、上記のように、複数回サイズ変更を試みると (各ドラッグの間にマウス ボタンを離す)、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>

したがって、これらの 2 つのグリッドは、最初の列で同じ幅を共有します。

このアプローチでは、適切な ViewModel を使用する必要があります。:)

編集:

GridSplitter を忘れましたが、同じプロパティに Bindings を使用して共有サイズを提供するという考え方です... GridSplitter を内部に配置しますが、最も重要なのは、これらの SharedSizeGroup タグを使用しないことです。

于 2013-12-04T12:34:05.143 に答える