かずきのBlog
C#やJavaやRubyとメモ書き

目次

Blog 利用状況
  • 投稿数 - 393
  • 記事 - 1
  • コメント - 440
  • トラックバック - 103
ニュース
  • 思い出は、いっぱい。
コメント
プログラマ的自己紹介
  • C#とRubyを趣味で。Javaを仕事で使ってやってます。 WPFをコツコツ勉強中。 IDE大好き。Visual Studio, Eclipse, NetBeansを使用中
お気に入りのツール/IDE
  • Visual Studio 2008 std
  • Eclipse
  • NetBeans6.0以降
  • 自作のツール
プロフィール
  • 大田 一希
  • 1981年1月30日産まれ
  • AB型
  • 左利き
経歴
  • 1993年 海田中学校 入学
  • 1996年 広島県立安芸南高等学校 入学
  • 1999年 某大学 環境情報学科 入学
  • 2003年 某大学 大学院 環境学研究科 入学
  • 2005年 就職して上京
  • 今に至る
アクセサリ
  • あわせて読みたい
  • ログ解析ネット証券

書庫

日記カテゴリ

 

2008年7月1日

巷にもよくある情報だけど、Windows FormのアプリケーションにWPFを置く方法。

  1. Windows Form Applicationを作成する
  2. WPFのUserControlを作成する(作成後ビルドもする)
  3. <UserControl x:Class="WinFormAndWPF.WpfContent"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
        <Grid>
            <Button Content="Hello world" />
        </Grid>
    </UserControl>
    
  4. WPF相互運用機能からElementHostをフォームに置く
    image
  5. ホストするコンテンツの選択で、表示したいWPFのUserControlを選択する
    image
  6. 完成(上がWPFで下が普通のWindowsFormのボタン)
    image

フォーム上に置いたWPFのUserControlは、普通のWindows Formのコントロールと同じように、フィールドに変数が作られる。ということで、普通に使える。
image

posted @ 23:33 | Feedback (2)
 

タイトルの通りです。要はマージンの話。
WPFは、レイアウトを指定すると、そのレイアウトの通りにコントロールを配置してくれる。
恐らくお世話になる率が高いGridレイアウトは、大体のレイアウトをこれだけで記述できちゃうくらいパワフルな代物です。

たとえば、下のようなコードを書くと絵のような画面になります。

<UserControl x:Class="SilverlightTest2.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Width="400" Height="300">
    <Grid x:Name="LayoutRoot" Background="White">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <TextBlock Grid.Row="0" Text="何か入れてね" />
        <TextBox Grid.Row="1" AcceptsReturn="True" />
        <StackPanel Grid.Row="2" 
                    Orientation="Horizontal" 
                    HorizontalAlignment="Right">
            <Button Content="決定" />
            <Button Content="キャンセル" />
        </StackPanel>
    </Grid>
</UserControl>

image

割とありがちな、画面の説明のためのテキストと入力欄とOKなのかNGなのかを選択するためのボタンがあるタイプの画面です。なんというか、敷き詰められた感があって手抜き感たっぷりに感じてしまう。
何かの番組(今もしてるのかな?)に出てきそうな「ゆとりの空間魔術師」とまでは行かなくても、普通にそれっぽい隙間は入れたいと思うのは人間の性。そういうときに、マージンを使います。

マージンを指定するのは簡単で、Marginプロパティに値を設定するだけ。四方に同じマージンを指定する場合は、単純に値を1つ設定するだけでいいようになってる。

たとえば、ボタンやテキストボックスの周りに幅5のマージンが欲しかったら下のようにすればいい。

        <TextBlock Grid.Row="0" Text="何か入れてね" />
        <TextBox Grid.Row="1" AcceptsReturn="True" />
        <StackPanel Grid.Row="2" 
                    Margin="5"
                    Orientation="Horizontal" 
                    HorizontalAlignment="Right">
            <Button Margin="5" Content="決定" />
            <Button Margin="5" Content="キャンセル" />
        </StackPanel>

image

一律に5とったもんだから、若干不自然な感じもするけど、隙間は開いた。こんな風に調整していけばピッチピチに詰まった画面じゃなくなる。後はセンスの問題だ!

ちなみに、マージンの指定方法には知ってるだけだと下のような指定方法がある。
多分これで全部じゃないかな…?

Margin="5":上下左右に5
Margin="5,10":左右に5、上下に10
Margin="10,20,30,40":左に10、上に20、右に30、下に40

ここら辺の変換は、Marginプロパティにコンバータがしかけてあるのだろう。実際のMarginプロパティの型はLeft,Top,Right,Bottomというdouble型のプロパティを持つThickness構造体であらわされてる。
C#からマージンを指定する場合は、この型を使うことになる。

posted @ 17:04 | Feedback (2)
 

7月もはじまった!初日からいきなり、プロジェクトの現地へ出張だった。
プロジェクトのメンバーじゃないけど、問題が起きたらいくのがうちの部署。

ということで、早めに終わって無事帰宅。らっき~!ということで6月のページビューです。

日, PV
2008/06/01 1684
2008/06/02 2472
2008/06/03 2768
2008/06/04 2447
2008/06/05 2377
2008/06/06 2661
2008/06/07 1391
2008/06/08 1405
2008/06/09 2824
2008/06/10 2697
2008/06/11 2389
2008/06/12 2566
2008/06/13 2356
2008/06/14 1501
2008/06/15 1365
2008/06/16 2618
2008/06/17 2333
2008/06/18 2188
2008/06/19 2779
2008/06/20 2762
2008/06/21 1349
2008/06/22 1241
2008/06/23 2739
2008/06/24 2524
2008/06/25 2518
2008/06/26 2508
2008/06/27 2553
2008/06/28 1256
2008/06/29 1397
2008/06/30 2410
合計 60992ページビュー

検索で、たまたまたどり着いた方や、見に来て頂いてるかた、どうもありがとうございました。
今月も変わらず、アレを続けると思ったら今度はコレか!ってくらいの幅広さでやっていけたらと思います。

posted @ 16:38 | Feedback (1)