縦横比を固定する目的で、ViewBox内にWindowsFormsHostを配置して使用している画面があります。
その画面で、ViewBoxを配置している領域のサイズを変更するとViewBox内に配置したWindowsFormsHost及びその内包するコントロールが縦横比を維持しなくなるという問題が発生しております。
以下再現性の有るサンプルxamlです。
起動後画面を横方向にゆっくり縮めて広げるを繰り返すと、最初はControlの背景色(赤)だけだったものがGridの背景色(緑)が見えてきます。
xaml
1<Window x:Class="WpfApplication1.MainWindow" 2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3 xmlns:wf="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms" 4 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 5 Title="MainWindow" Height="350" Width="525"> 6 <Grid> 7 <Viewbox Stretch="Uniform"> 8 <Grid Width="1920" Height="1080" Background="Green" x:Name="grid"> 9 <WindowsFormsHost Background="Yellow" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="0"> 10 <wf:Control BackColor="Red" Dock="Fill" Top="0" Left="0"/> 11 </WindowsFormsHost> 12 </Grid> 13 </Viewbox> 14 </Grid> 15</Window> 16
現象発生中、GridやWindowsFormsHostのMarginや各種Aligment等サイズ決定に影響のありそうな項目を確認しましたが特に問題はなさそうです。
内包するコントロール側で縦横比に応じたサイズ計算を行うようコントロールを継承したうえでWindowProcでWM_SIZINGを待ち受けてみましたが呼び出されません。
何か回避する良い方法は無いでしょうか?
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。