1

私はGridSplitter に苦労しています。WPF WebBrowser コントロールと互換性がないようです。

ウィンドウのサイズを変更して GridSplitter を移動すると、グリッドをウィンドウよりも広くして見えなくすることができます。

前:

http://img239.imageshack.us/img239/4061/grid1vn8.gif 前の WPF GridSplitter WebBrowser

後: (スクロールバーに注意)

http://img101.imageshack.us/img101/4303/grid2so0.gif 後の WPF GridSplitter WebBrowser

私のXAML...

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        MinWidth="450"
        Width="450"
        Height="300"
        Title="Window3">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition MinWidth="200" Width="*"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition MinWidth="200" Width="*"/>
        </Grid.ColumnDefinitions>
        <Button Name="Button2"
                Grid.Column="0"
                Margin="5"
                Content="Button2"/>
        <GridSplitter
            Width="2"
            Grid.Column="1"
            HorizontalAlignment="Center"
            Margin="5"
            Panel.ZIndex="1"
            VerticalAlignment="Stretch"
            ResizeBehavior="PreviousAndNext"
            ResizeDirection="Columns"/>
        <WebBrowser
            Grid.Column="2"
            Margin="5"
            Source="http://www.google.com"/>
    </Grid>
</Window>

問題を再現する手順...

  1. ウィンドウの右端を右にドラッグして、幅を約 2 倍にします。
  2. スプリッターを左にドラッグします。
  3. ウィンドウの右端を左にドラッグします。

GridSplitter がウィンドウに含まれるサイズを超えてグリッドのサイズを変更しないようにするにはどうすればよいですか?

誰かがこの問題についてもっと知っていますか? ...または回避策がありますか?

4

2 に答える 2

3

ScrollViewer の Border を使用してこれを再現できました (ただし、ScrollViewer なしでは再現できませんでした)。

左の列に MaxWidth を設定する (実際には効果がないはずの非常に大きな MaxWidth) が修正されたようです。

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Height="300"
        MinWidth="450"
        Width="450"
        Title="Window3">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition MinWidth="200" Width="*" MaxWidth="10000"/>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition MinWidth="200" Width="*"/>
        </Grid.ColumnDefinitions>
        <Button
            Name="Button2"
            Grid.Column="0"
            Margin="5"
            Content="Button2"/>
        <GridSplitter
            Width="2"
            Grid.Column="1"
            HorizontalAlignment="Center"
            Margin="5"
            Panel.ZIndex="1"
            VerticalAlignment="Stretch"
            ResizeBehavior="PreviousAndNext"
            ResizeDirection="Columns"/>
        <WebBrowser Grid.Column="2" Margin="5" Source="http://www.google.com"/>
    </Grid>
</Window>

ある時点で、星のサイズ変更がスペースが残っていないという事実を上書きするように見えるため、左の列が Width = 200 に達し、GridSplitter が右の列の星のサイズを 3* 程度に変更すると、列はスペースの有無にかかわらず 600 になります。

于 2008-12-17T23:50:21.377 に答える
1

おそらくこれを聞いてうんざりしていることはわかっていますが、純粋な XAML になるようにわずかに変更された上記の XAML を使用すると、問題を再現できません。

(XAML コードは問題にされました。)

動作の原因となっているコード ビハインドに何かある可能性はありますか?

于 2008-12-17T20:53:15.743 に答える