2016-11-09 10 views
1

私はネイティブのWPFウィンドウでWPF GUIを表示する場合には、こののWinformsが異なって見える

enter image description here

のように見えますが、私はWinfowmsでそれをホストするとき、それはこの

のように見えます

winfowms host

WPFビューのコード

 <StackPanel> 
      <StackPanel Orientation="Horizontal" > 
       <TextBlock x:Name="tb1">Histogram intervals:</TextBlock> 
       <TextBox Width="100"></TextBox> 
      </StackPanel> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock x:Name="tb2" Width="105">Mistie threshold, m:</TextBlock> 
       <TextBox Width="100" ></TextBox> 
     </StackPanel> 
    </StackPanel> 

また、ご覧のとおり、フォントのレンダリングの違いがあります。どうすればこれらの問題を解決できますか? Updated: 問題は、Winforms内でホストされているwpf nativeとwpfが異なるフォントを持っていることです。だから、tb1の幅はwin2で変更されます。なぜなら、tb2としてコード化されず、テキストのレンダリングサイズに依存するからです。リサイズは、WPFコントロール 内のすべてのテキストのために他のフォントを設定するため

+0

[mcve]を提供できる場合は役立つかもしれません。 – Mat

+0

すぐに例を追加しますが、フォント/コントロールのレンダリングには必要ないと思います。 – virty

+0

「LayoutPanel」を使用することを知らずに、何が重要であるかを言うのは難しいです。多分フォントではない – Mat

答えて

2

バグが発生した私は、WinFormsのが主催する私のUserControlに

FontFamily="Segoe UI" FontSize="12" 

を追加することによって、これを解決しました。

これらの属性は、winformにそのフォントの使用を強制します。

+0

嬉しいです。とにかく 'Stackpanel'の中で' Stackpanel'の代わりに 'Grid'を使うと、テキストボックスは整列したままになります。フォント(サイズ)をいつか変更したいとします。レイアウト全体を再度変更する必要があります。 – Mat

+0

迷惑なGrid.Row Grid.Column属性のため、私はグリッドで作業したくありません。コントロールが細胞に自動設定されていると便利です。 たとえば、2行2列のグリッドを使用します。 grid.Childsの最初のコントロールはRow = 0のColumn 0になります。2番目のRowは0、Column1になります。それは可能ですか? あなたが{結合パス=幅、要素名= tb1}を使用して私が説明した場合 – virty

+0

http://wpftutorial.net/GridLayout.html – Mat

関連する問題