2020年2月29日土曜日

WebViewのレイアウトがずれるときの対処法(C# WPF)

リサイズ時にWebViewのレイアウト崩壊

メインWindowに対して、左ペインに操作パネル、右ペインにWebViewを含むアプリケーションを作りました。普通に走らせるだけでは問題ありませんが、WindowをリサイズするとWebViewの中身の表示が崩壊します。
WebViewを親Gridに対してどうレイアウトするかによって、リサイズ時に崩壊するかどうかが決まるようで、試しに左右ペインのコントロールを入れ替え、左ペインにWebViewを表示させてみたところ、リサイズしても表示が崩れることはありませんでした。

※WebViewはEdge版(非Chrome)のものを使用しています。他のWebBrowser系のコントロールでも有効かどうかは不明です。


解決法

コントロールの配置順序が問題でした。
問題発生時の概略は以下です。

<Grid>
  <Grid.ColumnDefinitions />
  <Grid Grid.Column="0" />
  <WebView Grid.Column="1" />
</Grid>

このままではWebViewがリサイズ時にWidthを取得できずに(?)バグるので、Gridで囲んであげます。

<Grid>
  <Grid.ColumnDefinitions />
  <Grid Grid.Column="0" />
  <Grid Grid.Column="1"> 
    <WebView/>
  </Grid>
</Grid>

これで完全解決しました。

0 件のコメント:

コメントを投稿